Я видел изменение кода на работе, когда значения режима были изменены с 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) ноль.