Нещодавно мені було цікаво, у чому різниця між дозволами на три-чотири цифри для файлів. Я отримую числові дозволи, запустивши. stat --format "%a" $file_name
Яка різниця між 0644 та 644?
Нещодавно мені було цікаво, у чому різниця між дозволами на три-чотири цифри для файлів. Я отримую числові дозволи, запустивши. stat --format "%a" $file_name
Яка різниця між 0644 та 644?
Відповіді:
Перша цифра в чотиризначному дозволі - це сума встановленого ідентифікатора користувача (4), встановленого ідентифікатора групи (2) та липкого (1). Тризначний дозвіл так само, як і чотиризначний дозвіл з першою цифрою, встановленою на нуль. Таким чином:
Якщо виконується файл із встановленим ідентифікатором користувача, він виконується як би власником файлу, а не користувачем, який виконує виконання. Так, наприклад, /bin/mount
зазвичай належить root та має дозволи 4755, де 4 означає, що навіть якщо він виконаний звичайним користувачем, він буде працювати з правами власника (root) власника.
Встановлення ідентифікатора групи в каталозі корисно для обміну файлами.
Клейкий біт використовується в таких каталогах, /tmp
щоб усі користувачі могли створювати файли, але не дозволяє власникам видаляти файли інших людей. Таким чином, права дозволу /tmp
, як правило, становлять 1777, де 1 означає, що встановлений клейкий біт.
Від man chmod
:
Режим числення - це від однієї до чотирьох восьмеричних цифр (0-7), отриманий шляхом складання бітів зі значеннями 4, 2 та 1. Пропущені цифри вважаються провідними нулями. Перша цифра вибирає встановлений ідентифікатор користувача (4) та встановлює ідентифікатор групи (2) та обмежений атрибут видалення або липкий (1). Друга цифра вибирає дозволи для користувача, якому належить файл: read (4), write (2) та Execute (1); третій вибирає дозволи для інших користувачів групи файлів з однаковими значеннями; і четверте для інших користувачів, які не входять до групи файлів, з однаковими значеннями.