Я побачив зміну коду на роботі, де значення режимів були змінені з 777 на 0777, щоб зробити nfs setattr роботою. Яка різниця у двох значеннях?
mkdir(). 0777 проти 777
Я побачив зміну коду на роботі, де значення режимів були змінені з 777 на 0777, щоб зробити nfs setattr роботою. Яка різниця у двох значеннях?
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
Якщо ви встановите дозвіл, використовуючи чотири цифри, перший встановить або видалить цей біт.
Цікава відповідь:
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
Це дозволяє уникнути випадкового видалення встановлених / setgid бітів для каталогів. Детальніше див. У документації на chmod .
У системі Linux доступні два типи дозволів:
У дозволі на файл ми встановлюємо дозвіл на файли та папки:
Дозволи:
Три типи дозволів:
У своєму запитанні ви запитуєте, в чому різниця, тому немає різниці між chmod 777 and 0777тим, що є показник no any octal valueзначення (0) нуля.