Я видел изменение кода на работе, когда значения режима были изменены с 777 на 0777, чтобы заставить работать nfs setattr. Какая разница в 2 значениях?
permissions
user1071840
источник
источник
mkdir()
. 0777 против 777Ответы:
Если вы передаете их
chmod
(программа командной строки), нет никакой разницы. Но в программе на C или аналогичной,0777
она восьмеричная (три набора по три 1 бита, что и нужно), хотя777
является десятичной, и это совсем другая битовая комбинация. (chmod
будет интерпретировать любой числовой аргумент как восьмеричное, поэтому нет нужды в начале нуля.)0777 (восьмеричное) == двоичное
0b 111 111 111
== разрешенияrwxrwxrwx
(== десятичное число511
)777 (десятичное число) == двоичное
0b 1 100 001 001
== разрешенияsr----x--x
(== восьмеричное1411
)источник
chmod
команде, всегда интерпретируется как восьмеричное. Использованиеchmod 888
даст ошибку.chmod
интерпретирует числовой аргумент как восьмеричный, независимо от префикса. (Но на самом деле само число не имеет функции; только цифры, точнее, биты.)1777
, вам нужно написать01777
?1777
написан01777
на C. (Или вы могли бы написать1023
, это то же самое число в десятичном виде. Но не :-)Первый бит используется для липкого бита http://en.wikipedia.org/wiki/Sticky_bit
Если вы устанавливаете разрешение, используя 4 цифры, первый установит или удалит этот бит.
источник
Интересный ответ:
0700
и700
, как объяснено в других ответах00700
и0700
(для каталогов)По крайней мере, так обстоит дело с версией chmod для GNU coreutils, которая используется по умолчанию в Linux.
Смотрите этот пример:
Это сделано для того, чтобы избежать случайного удаления битов setuid / setgid для каталогов. Подробности смотрите в документации chmod .
источник
В системе Linux доступны два типа разрешений:
В разделе «Права доступа к файлам» мы устанавливаем права на файлы и папки:
Разрешения:
В то время как в специальном разрешении три типа разрешения:
В своем вопросе вы спрашиваете, в чем разница, поэтому между ними нет никакой разницы,
chmod 777 and 0777
потому что естьno any octal value
значение, которое показывает (0) ноль.источник