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 0777jest ósemkowy (trzy zestawy trzech 1 bitów, co zamierzamy), podczas gdy 777jest dziesiętny i ma całkiem inny wzorzec bitowy. ( chmodzinterpretuje 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)
chmodpolecenia jest zawsze interpretowana jako ósemkowa. Użycie chmod 888spowoduje błąd.
chmodinterpretuje 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?
1777jest napisany 01777w 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:
0700i 700, jak wyjaśniono w innych odpowiedziach00700i 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 0777ponieważ istnieje no any octal valuektóra wartość pokazana na (0) zero.