Natknąłem się na zaskakujące (jak dla mnie) zachowanie uprawnień w FreeBSD. Załóżmy, że działam jako użytkownik inny niż root . Tworzę plik, ustawiam jego uprawnienia tylko do odczytu, a następnie próbuję do niego zapisać:
$ touch f
$ chmod 400 f
$ ls -l f
-r-------- 1 user wheel f
$ echo a >> t
t: Permission denied.
Na razie w porządku. Teraz robię to samo co root i zapisuje do pliku:
# ls -l f2
-r-------- 1 root wheel f2
# echo a >> f2
# echo $?
0
Czy to błąd lub zamierzone zachowanie? Czy mogę bezpiecznie założyć, że tak będzie działać na każdym Uniksie i Linuksie?
chmod
zapisać pliku tylko do odczytu, ponieważ nie może zapisać do pliku.
touch somefile; chmod 0000 somefile; chmod 0644 somefile
jako zwykły użytkownik.
CAP_DAC_OVERRIDE
może to zrobić. W prawie wszystkich systemach Linux oznacza to, że root może to zrobić, więc jest to celowe. Nie mogę mówić o części FreeBSD, ale wyobrażam sobie, że mają podobną konfigurację.