Uważam (nie jestem pewien), że właściciel pliku / katalogu i użytkownik root są jedynymi użytkownikami, którzy mogą zmieniać uprawnienia do pliku / katalogu. Czy mam rację, czy są też inni użytkownicy, którzy mogą zmieniać uprawnienia?
Uważam (nie jestem pewien), że właściciel pliku / katalogu i użytkownik root są jedynymi użytkownikami, którzy mogą zmieniać uprawnienia do pliku / katalogu. Czy mam rację, czy są też inni użytkownicy, którzy mogą zmieniać uprawnienia?
Odpowiedzi:
Tylko właściciel i root
(superużytkownik) mogą zmieniać uprawnienia do pliku lub katalogu. Oznacza to, że właściciel i superużytkownik mogą ustawić uprawnienia do odczytu ( r
), zapisu ( w
) i wykonania ( x
). Ale zmiana własności (użytkownika / grupy) plików i katalogów za pomocą poleceń chown
/ chgrp
jest dozwolona tylko root
.
Do celów normalnej pracy tylko root i właściciel mogą chmod
. Ponadto główny można chown
a chgrp
, a ponadto właściciel może chgrp
ile właściciel jest członkiem grupy docelowej.
Ze względów bezpieczeństwa istnieje jednak inny przypadek: każdy użytkownik z uprawnieniami do zapisu w katalogu zawierającym plik może zastąpić plik kopią, a tym samym stać się właścicielem, uzyskując możliwość modyfikowania uprawnień i zawartości.
Tak jak:
14:14 mybox:~ mkdir mydir
14:14 mybox:~ cd mydir/
14:14 mybox:mydir echo foo | sudo tee yourfile
foo
14:14 mybox:mydir ls -ld . yourfile
drwxr-xr-x 3 me staff 102 Apr 11 14:14 .
-rw-r--r-- 1 root staff 4 Apr 11 14:14 yourfile
Stworzyliśmy katalog i napisaliśmy plik jako root. Ponieważ root jest właścicielem pliku, nie możemy do niego zapisywać, ani nie możemy chmod:
14:15 mybox:mydir echo bar > yourfile
-bash: yourfile: Permission denied
14:15 mybox:mydir chmod a+x yourfile
chmod: Unable to change file mode on yourfile: Operation not permitted
Mamy jednak uprawnienia do zapisu do katalogu, więc możemy zastąpić plik, aby uzyskać własność:
14:15 mybox:mydir mv yourfile yourfile2
14:15 mybox:mydir cp yourfile2 yourfile
14:15 mybox:mydir ls -ld . yourfile
drwxr-xr-x 4 me staff 136 Apr 11 14:15 .
-rw-r--r-- 1 me staff 4 Apr 11 14:15 yourfile
A teraz, kiedy jesteśmy właścicielem, możemy oczywiście robić, co chcemy z tym plikiem:
14:15 mybox:mydir echo bar > yourfile
14:15 mybox:mydir chmod a+x yourfile
14:16 mybox:mydir cat yourfile
bar
Podobnie każdy użytkownik z uprawnieniami do zapisu do dowolnego katalogu w pełnej ścieżce prowadzącej do pliku może od tego momentu zastąpić strukturę katalogu, uzyskując w ten sposób własność pliku o podanej nazwie. Oczywiście własność lub uprawnienia rzeczywistego oryginalnego pliku (którego nazwę zmieniliśmy na „twój_plik2”) nie ulega zmianie.
14:17 mybox:mydir ls -l yourfile2
-rw-r--r-- 1 root staff 4 Apr 11 14:14 yourfile2
getfacl / setfacl
), które zapewniają większą elastyczność niż uprawnienia do plików w „klasycznym” stylu. Usuwanie pliku w * nix polega na usunięciu łącza do pliku z katalogu, więc usunięcie pliku jest zawsze kontrolowane przez uprawnienia do katalogu; same uprawnienia do plików nie odgrywają tam żadnej roli.
chmod
Polecenie dość bezpośrednio wywołuje funkcję systemową o tej samej nazwie; strona podręcznika chmod(2)
systemowego wywołania (w Linuksie 4.10) mówi:
Efektywny identyfikator UID procesu wywołującego musi być zgodny z właścicielem pliku lub proces musi być uprzywilejowany (Linux: musi mieć taką
CAP_FOWNER
możliwość).Jeśli proces wywoływania nie jest uprzywilejowany (Linux: nie ma takiej
CAP_FSETID
możliwości), a grupa pliku nie pasuje do efektywnego identyfikatora grupy procesu lub jednego z jego dodatkowych identyfikatorów grupy,S_ISGID
bit zostanie wyłączony, ale to nie spowoduje zwrócenia błędu.
Tak, proces działający jako root może zmienić uprawnienia dowolnego pliku, jeśli nie porzucił CAP_FOWNER
możliwości.
Interesujące jest również chown
; strona podręcznika man chown(2)
mówi:
Tylko proces uprzywilejowany (Linux: jeden z
CAP_CHOWN
możliwością) może zmienić właściciela pliku. Właściciel pliku może zmienić grupę pliku na dowolną grupę, której członek jest członkiem. Proces uprzywilejowany (Linux: zCAP_CHOWN
) może dowolnie zmienić grupę.