Tôi đã vấp phải hành vi cho phép đáng ngạc nhiên (đối với tôi) trên FreeBSD. Giả sử tôi đang hoạt động với tư cách là người dùng không root . Tôi tạo một tệp, đặt quyền của nó ở chế độ chỉ đọc và sau đó thử ghi vào đó:
$ touch f
$ chmod 400 f
$ ls -l f
-r-------- 1 user wheel f
$ echo a >> t
t: Permission denied.
Càng xa càng tốt. Bây giờ tôi làm tương tự như root và nó ghi vào tệp:
# ls -l f2
-r-------- 1 root wheel f2
# echo a >> f2
# echo $?
0
Đây có phải là một lỗi hoặc hành vi dự định? Tôi có thể an toàn cho rằng điều này sẽ hoạt động như vậy trên bất kỳ Unix & Linux nào không?
chmod
không thể ghi vào tệp.
touch somefile; chmod 0000 somefile; chmod 0644 somefile
như một người dùng bình thường.
CAP_DAC_OVERRIDE
có thể làm điều này. Trên hầu hết các hệ thống Linux, điều này có nghĩa là root có thể làm điều này vì vậy nó có chủ ý. Không thể nói cho phần FreeBSD nhưng tôi tưởng tượng họ có một thiết lập tương tự.