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?
files
permissions
root
arrowd
źródło
źródło
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ę.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.Odpowiedzi:
To normalne,
root
że można zastąpić uprawnienia w ten sposób.Innym przykładem jest
root
możliwość odczytu pliku bez dostępu do odczytu:Niektóre systemy mają pojęcie niezmiennych plików. np. na FreeBSD:
Teraz nawet
root
nie można zapisać do pliku. Ale oczywiścieroot
można usunąć flagę:Z FreeBSD możesz pójść o krok dalej i ustawić flagę jądra, aby zapobiec jej
root
usunięciu:Teraz nikt, nawet nie
root
może zmienić tego pliku.(System wymaga ponownego uruchomienia w celu zmniejszenia poziomu bezpieczeństwa).
źródło
chattr +i tst
ustawia atrybut niezmienny .Tak, to bardzo normalne. root nie ma ograniczeń odczytu / zapisu (z bardzo małym wyjątkiem), ponieważ jest rootem.
źródło