Яка перша цифра у 4-розрядній восьмеричній дозволі на файл Unix?


40

3-значний:

644
ugo (user group other)

4-значний:

0644
?ugo (??? user group other)

Яка перша восьмерична цифра для 4-розрядних восьмеричних позначок дозволу файлів Unix?

Відповіді:


48

Від man chmod:

Числовий режим - це від однієї до чотирьох восьмеричних цифр (0-7), отриманих шляхом складання бітів зі значеннями 4, 2 та 1. Будь-які опущені цифри вважаються провідними нулями. Перша цифра вибирає встановлений ідентифікатор користувача (4) та встановлює атрибути групи ID (2) та липкий (1).

Що таке "встановити ідентифікатор користувача", "встановити ідентифікатор групи" та "липкий"?

setuid / setgid :

setuid і setgid (скорочення "встановити ідентифікатор користувача після виконання" та "встановити ідентифікатор групи після виконання" відповідно) - це прапори прав доступу Unix, які дозволяють користувачам запускати виконуваний файл з дозволами власника або групи виконавчого файлу. Вони часто використовуються, щоб дозволити користувачам комп'ютерної системи запускати програми з тимчасово підвищеними привілеями для виконання конкретного завдання. Хоча надані пільги щодо ідентифікатора користувача або ідентифікатора групи не завжди підвищені, як мінімум, вони є конкретними.

Також, застосувавши до каталогу, setuid / setgid спричиняє, що нові файли, створені в каталозі, успадковують uid або gid, відповідно, батьківського каталогу. Така поведінка змінюється залежно від смаку Unix. Наприклад, linux вшановує setgid, але ігнорує налаштування в каталогах.

І липкий :

Найпоширеніше використання клейкого шматочка сьогодні - в каталогах. Якщо встановлено клейкий біт, перейменувати або видаляти файли може лише власник елемента, власник каталогу або суперпользователь. Без встановлення клейкого біта будь-який користувач, який має дозволи на запис і виконання для каталогу, може перейменовувати або видаляти вміщені файли, незалежно від власника. Зазвичай це встановлено в каталозі / tmp для запобігання звичайним користувачам видалення або переміщення файлів інших користувачів.


12

У Setgid є ще одна дуже важлива функція, на яку я покладаюсь щодня, але яка не включена до уривку Handyman5 (цитата з тієї ж сторінки, що пов’язана вище):

Параметри setuid та setgid, встановлені в каталозі, мають зовсім інше значення.

Встановлення встановленого дозволу на каталог (chmod g + s) призводить до того, що нові файли та підкаталоги, створені в ньому, успадковують його ідентифікатор групи, а не основний ідентифікатор групи користувача, який створив файл (ідентифікатор власника ніколи не впливає, лише ідентифікатор групи). Новостворені підкаталоги успадковують заданий біт.

Таким чином, це дає можливість спільної робочої області для групи без незручностей вимагати від членів групи явно змінити свою поточну групу перед створенням нових файлів або каталогів. Зауважте, що встановлення дозволу setgid на каталог впливає лише на ідентифікатор групи нових файлів і підкаталогів, створених після встановлення біта setgid, і не застосовується до існуючих об'єктів. Встановлення встановленого біта в існуючих підкаталогах повинно здійснюватися вручну, використовуючи таку команду, як:

[root@foo]# find /path/to/directory -type d -exec chmod g+s {} \;

chmod g+sозначатиме додавання 2 на передній частині вісімкового значення, що робить каталог, який має 775 дозволів ( drwxrwxr-x) на 2775 ( drwxrwsr-x).


2
FYI: MacOS X поводиться так, ніби біт SGID завжди включений у каталог.
Джонатан Леффлер

4

На додаток до інших відповідей, ведучий 0 - це умовна умова, що використовується для позначення числа - восьмеричним. Тут це не потрібно, оскільки дозволи на файли завжди виражаються у восьмериці, але це все одно може бути ще однією причиною, чому він присутній.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.