Nếu tôi tạo một tệp với tư cách là người dùng không có đặc quyền và thay đổi chế độ quyền thành 400
, thì người dùng đó sẽ xem là chỉ đọc, chính xác:
$ touch somefile
$ chmod 400 somefile
$ [ -w somefile ] && echo rw || echo ro
ro
Tất cả đều tốt.
Nhưng sau đó root đi cùng:
# [ -w somefile ] && echo rw || echo ro
rw
Cái quái gì thế Chắc chắn, root có thể ghi vào các tệp chỉ đọc, nhưng nó không nên tạo thói quen cho nó: Thực tiễn tốt nhất sẽ có xu hướng ra lệnh rằng tôi sẽ có thể kiểm tra bit cho phép ghi, và nếu không, thì nó đã được đặt cách đó cho một lý do.
Tôi đoán tôi muốn hiểu cả lý do tại sao điều này xảy ra và làm cách nào tôi có thể nhận được mã trả về sai khi kiểm tra một tệp không có bit ghi được đặt?
/etc/dhcp/dhcpd.conf
, được sở hữu bởi root. Tôi đang sử dụng nhà cung cấp cung cấp dhcpd
. Thảm họa toàn diện hả? Các tập tin được kiểm tra vào RCS, tôi tự động sử dụng rcsdiff
, ci
và co
bởi vì chúng tôi có nhà khai thác mà cần phải ... hoạt động. Kiểm tra bit cho phép ( -w
, như chi tiết bởi test(1)
) sẽ là dòng thất bại đầu tiên, hoạt động trên cơ sở để ci -u
lại một tệp chỉ đọc. Tôi đang từ bỏ điều đó và đi thẳng đến rcsdiff -q
và kiểm tra $?
. Bất khả xâm phạm dhcpd
? Nó sẽ được sở hữu bởi dhcpd
.
bash
và test
khiến tôi tin rằng đó là những gì [ -w
dành cho.
4.1.2(1)-release
) và RHEL7 (4.2.46(2)-release
).