Jaka jest pierwsza liczba w 4-liczbowym argumencie chmod (takim jak `chmod 4555`)?

20

Po zainstalowaniu programu zaleca się to chmod 4555. Okej, wiem o wartościach, jeśli użyję tylko trzech liczb. Na przykład

chmod 555 test-file

da

-r-xr-xr-x

4 dla zapisu, 2 dla odczytu i 1 dla wykonania. Ale kiedy to robię:

chmod 4555 test-file

to daje mi

-r-sr-xr-x

Więc xzmieniłem na s. Co to znaczy?

Mas Bagol
źródło
1
wyjaśniono również tutaj: askubuntu.com/a/550947/72216 („about the s-flag”)
Jacob Vlijm
@JobobVlijm wyjaśnił także bardziej szczegółowo inne „specjalne” bity poniżej
Thomas Ward

Odpowiedzi:

29

W rzeczywistości istnieją 4 zestawy atrybutów, z którymi można pracować za pośrednictwem chmod.

Special, User/Owner, Group, I Othersw tym celu, podczas pracy z chmods czterech numerów, z tym pierwsza liczba jest specjalne bity, które można ustawić.

chmod 4555 odpowiada następującemu:

  • Set UID bit - Uruchom plik jako właściciel, niezależnie od tego, który użytkownik go uruchamia
  • Użytkownik / właściciel: Read, Execute
  • Grupa: Read, Execute
  • Inne: Read, Execute

Ciąg s„czytelny dla człowieka” dla uprawnień wskazuje, że SetUIDbit (wyjaśniony poniżej) jest ustawiony.


W efekcie możemy rozbić chmodargument czterech liczb uprawnień na konkretne deskryptory w następujący sposób, i wykonując matematykę, aby ustalić, co to 4będzie pierwsza sekcja, a 5następna sekcja i tak dalej.

Pamiętaj, że ####jest Special User/Owner Groupi Othersw tej kolejności.

W przypadku Specialatrybutów (pierwsza liczba w czterocyfrowym chmodargumencie):

  • Set UID- Uruchom plik jako właściciel bez względu na użytkownika, który go uruchomił (pokazuje jak sw czytelnym dla człowieka łańcuchu uprawnień dla Usersekcji) = +4 ( --sponiżej User/Owner)
  • Set GID- Uruchom plik jako grupę niezależnie od uruchomionego użytkownika / grupy (pokazuje jak sw czytelnym dla człowieka łańcuchu uprawnień dla Groupsekcji) = +2 ( --sponiżej Group)
  • Sticky Bit- SKUTECZNY TYLKO DLA KATALOGÓW - Jeśli jest ustawiony, tylko użytkownik katalogu rootmoże usunąć katalog i tylko właściciel pliku lub rootmoże usunąć pliki w nim zawarte. (pokazuje jak tw czytelnym dla człowieka ciągu uprawnień dla Otherssekcji) = +1 ( --tponiżej Others)

Na User/Owner, Groupi Othersatrybuty (ostatnie trzy cyfry w czterech liczb chmodargumentu):

  • Read= +4 ( r--)
  • Write= +2 ( -w-)
  • Execute(dla plików) lub „Enter Into / List Items” (dla katalogów) = +1 ( --x)
Thomas Ward
źródło
7

To się nazywa SETUIDbit. jeśli jest ustawione przez chmod 4555 test-file(w twoim przypadku), to test-filemoże być wykonane przez dowolnego użytkownika tak, jakby użytkownik był właścicielem pliku.

Gdy SETUIDbit jest ustawiony, wówczas efektywny identyfikator użytkownika ( EUID) użytkownika, który nie ma uprawnień do wykonania pliku w inny sposób (np. Przy normalnych uprawnieniach 0744), przyjmuje identyfikator EUID właściciela pliku i może wykonać plik.

heemayl
źródło