Ostatnio zastanawiałem się, jaka jest różnica między trzema a czterema cyfrowymi uprawnieniami do plików numerycznych. Otrzymuję uprawnienia numeryczne, uruchamiając. stat --format "%a" $file_name
Jaka jest różnica między 0644 a 644?
Ostatnio zastanawiałem się, jaka jest różnica między trzema a czterema cyfrowymi uprawnieniami do plików numerycznych. Otrzymuję uprawnienia numeryczne, uruchamiając. stat --format "%a" $file_name
Jaka jest różnica między 0644 a 644?
Odpowiedzi:
Pierwsza cyfra w czterocyfrowym uprawnieniu to suma ustawionego identyfikatora użytkownika (4), ustawionego identyfikatora grupy (2) i lepkiej (1). Trzycyfrowe uprawnienie jest jak czterocyfrowe uprawnienie z pierwszą cyfrą ustawioną na zero. A zatem:
Jeśli wykonywany jest plik o ustawionym identyfikatorze użytkownika, jest on wykonywany tak, jakby był właścicielem pliku, a nie wykonującym. Tak więc, na przykład, /bin/mount
zwykle jest własnością root i ma uprawnienia 4755, gdzie 4 oznacza, że nawet jeśli zostanie wykonane przez zwykłego użytkownika, będzie działać z uprawnieniami właściciela (root).
Ustawienie identyfikatora grupy w katalogu jest przydatne do udostępniania plików.
Lepki bit jest używany w katalogach, takich jak /tmp
, aby wszyscy użytkownicy mogli tworzyć pliki, ale uniemożliwiał nie-właścicielom usuwanie plików innych osób. Zatem uprawnienia /tmp
wynoszą zwykle 1777, gdzie 1 oznacza, że bit lepki jest ustawiony.
Od man chmod
:
Tryb numeryczny składa się z jednej do czterech cyfr ósemkowych (0–7), uzyskanych przez dodanie bitów o wartościach 4, 2 i 1. Zakłada się, że pominięte cyfry są zerami wiodącymi. Pierwsza cyfra wybiera ustawiony identyfikator użytkownika (4) i identyfikator grupy (2) oraz atrybuty ograniczonego usuwania lub lepkiego (1). Druga cyfra określa uprawnienia użytkownika, który jest właścicielem pliku: read (4), write (2) i execute (1); trzeci wybiera uprawnienia dla innych użytkowników w grupie plików, z tymi samymi wartościami; i czwarty dla innych użytkowników spoza grupy plików, o takich samych wartościach.