Я видел изменение кода на работе, когда значения режима были изменены с 777 на 0777, чтобы заставить работать nfs setattr. Какая разница в 2 значениях?
mkdir()
. 0777 против 777
Я видел изменение кода на работе, когда значения режима были изменены с 777 на 0777, чтобы заставить работать nfs setattr. Какая разница в 2 значениях?
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.
Смотрите этот пример:
$ 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
Это сделано для того, чтобы избежать случайного удаления битов setuid / setgid для каталогов. Подробности смотрите в документации chmod .
В системе Linux доступны два типа разрешений:
В разделе «Права доступа к файлам» мы устанавливаем права на файлы и папки:
Разрешения:
В то время как в специальном разрешении три типа разрешения:
В своем вопросе вы спрашиваете, в чем разница, поэтому между ними нет никакой разницы, chmod 777 and 0777
потому что есть no any octal value
значение, которое показывает (0) ноль.