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?
mkdir()
. 0777 vs 777
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?
mkdir()
. 0777 vs 777
Odpowiedzi:
Jeśli przekazujesz je do chmod
(program wiersza poleceń), nie ma różnicy. Ale w programie C lub podobnym 0777
jest ósemkowy (trzy zestawy trzech 1 bitów, co zamierzamy), podczas gdy 777
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
== uprawnienia rwxrwxrwx
(== dziesiętny 511
)
777 (dziesiętny) == binarny 0b 1 100 001 001
== uprawnienia sr----x--x
(== ósemkowy 1411
)
chmod
polecenia jest zawsze interpretowana jako ósemkowa. Użycie chmod 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 napisany 01777
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.
Interesująca odpowiedź to:
0700
i 700
, jak wyjaśniono w innych odpowiedziach00700
i 0700
(dla katalogów)Przynajmniej tak jest w przypadku wersji chmod GNU coreutils, która jest domyślna w Linuksie.
Zobacz ten przykład:
$ ls -ld mydir
drws--s--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
$ chmod 0710 mydir ; ls -ld mydir # surprise ahead -- s-bits remain:
drws--s--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
$ chmod 00710 mydir ; ls -ld mydir # _now_ they're gone:
drwx--x--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
Ma to na celu uniknięcie przypadkowego usunięcia bitów setuid / setgid dla katalogów. Aby uzyskać szczegółowe informacje, zobacz dokumentację chmod .
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ż istnieje no any octal value
która wartość pokazana na (0) zero.