Widziałem zmianę kodu w pracy, w której wartości trybu zostały zmienione z 777 na 0777, aby nfs setattr działał. Jaka jest różnica w 2 wartościach?
permissions
użytkownik1071840
źródło
źródło
mkdir()
. 0777 vs 777Odpowiedzi:
Jeśli przekazujesz je do
chmod
(program wiersza poleceń), nie ma różnicy. Ale w programie C lub podobnym0777
jest ósemkowy (trzy zestawy trzech 1 bitów, co zamierzamy), podczas gdy777
jest dziesiętny i ma całkiem inny wzorzec bitowy. (chmod
zinterpretuje każdy argument liczbowy jako ósemkowy, dlatego nie jest wymagane żadne początkowe zero).0777 (ósemkowy) == binarny
0b 111 111 111
== uprawnieniarwxrwxrwx
(== dziesiętny511
)777 (dziesiętny) == binarny
0b 1 100 001 001
== uprawnieniasr----x--x
(== ósemkowy1411
)źródło
chmod
polecenia jest zawsze interpretowana jako ósemkowa. Użyciechmod 888
spowoduje błąd.chmod
interpretuje argument liczbowy jako ósemkowy, niezależnie od przedrostka. (Ale tak naprawdę sama liczba nie ma żadnej funkcji; same cyfry, a raczej bity.)1777
, musisz napisać01777
?1777
jest napisany01777
w C. (Lub możesz napisać1023
, która jest ta sama liczba w systemie dziesiętnym. Ale nie :-)Pierwszy bit jest używany do lepkiego bitu http://en.wikipedia.org/wiki/Sticky_bit
Jeśli ustawisz uprawnienia za pomocą 4 cyfr, pierwsza ustawi lub usunie ten bit.
źródło
Interesująca odpowiedź to:
0700
i700
, jak wyjaśniono w innych odpowiedziach00700
i0700
(dla katalogów)Przynajmniej tak jest w przypadku wersji chmod GNU coreutils, która jest domyślna w Linuksie.
Zobacz ten przykład:
Ma to na celu uniknięcie przypadkowego usunięcia bitów setuid / setgid dla katalogów. Aby uzyskać szczegółowe informacje, zobacz dokumentację chmod .
źródło
W systemie Linux dostępne są dwa typy uprawnień:
W Uprawnienia plików ustawiamy uprawnienia do plików i folderów:
Uprawnienia są następujące:
W specjalnym zezwoleniu są trzy rodzaje zezwoleń:
W swoim pytaniu pytasz, czym jest różnica, więc nie ma żadnej różnicy między,
chmod 777 and 0777
ponieważ istniejeno any octal value
która wartość pokazana na (0) zero.źródło