Оболонки linux розбираємо umask з прикладами

Оболонки linux розбираємо umask з прикладами

У GNU / Linux системі кожен файл або папка мають деякі права доступу. Є три типи дозволів (що дозволено робити з файлами будь-якого типу, включаючи каталог):

(R) read access - читання

(W) write access - доступ на запис

(Е) execute access - виконати доступ

Є й інші "особливі" права, але в цій статті ми розглянемо базові правила, щоб проілюструвати як працюють Umask і дозволу, певні для трьох типів користувачів:

(U) власника файлу

(G) групи, яка належить власнику

(O) всі інші користувачі

Umask (user mask) є командою і функцій в середовищі POSIX, яка встановлює режим створення файлу маски з поточною діяльністю, який обмежує режими доступу до файлів і каталогів, створених в процесі. Процес може змінити файловий режим створення маски з Umask і нове значення успадковується дочірніми процесами.

На практиці з Umask ви можете задати права доступу до нових файлів, які створює ваш процес.

user mask містить восьмеричні значення дозволу, які ви хочете встановити для всіх нових файлів, і підраховує значення, які ви хочете отримати Отт 666 (для файлів) або 777 (для каталогу).

Залишковий значеніe для використання з Umask командою.

Наприклад, припустимо, що ви хочете змінити режим за замовчуванням для файлів 664 (rw-rw-r-). Різниця між 666 і 664 становить 002, і його можна використовувати в якості аргументу Umask команди.

Або просто використовувати цю зручну таблицю

umask Octal Value

У цій статті я покажу вам, на практиці, як використовувати Umask для зміни права доступу до нових файлів, тому відкрийте термінал і повторюйте за мною

1) Перевірте ваші права

Давайте створимо файл в / tmp

На виході ви отримаєте це:

2) Змінити Umask за замовчуванням

Отже, тепер ми знаємо, що таое Umask 0022, яка виробляє файли -rw-r-r-дозволом, але в багатьох випадках ви хочете дати своїм колегам права записи в каталог і файли, які ви створюєте, тому, щоб обчислити нові UMASK, ми переводимо дозволу -rw-rw-r- в вісімковому поданні, а саме: 662 і відняти це число з 666, в результаті вийде Umask, який ви хочете встановити в оболонці:

І на цей раз ви отримаєте наступний висновок:

3) Установка Umask для процесу і daemons

Іноді вам доведеться працювати з процесами і daemons, які створюють файли, і ви потрібно управляти дозволами цих файлів. Типовий приклад - сервер Apache HTTPD, який створює файли з додатками або з деякими сценаріями. І як тільки вони создни, вам потрібно смодіфіціровать ці файли з вашим ім'ям користувача з тією ж групою Apache. Як це зробити?

Загалом, ви повинні поставити команду Umask в сценарій, який використовується для запуску демона або в файлах, включених на початку, так і для apache це може бути /etc/init.d/apache2 (debian) або краще якщо файл буде включати / etc / apache2 / envvars (debian).

Таким чином, можна встановити Umask в / etc / apache2 / envvars (debian):

А тепер, якщо ви порівняєте різниця в кореневому каталозі, ви повинні побачити щось на зразок цього:

4) Установка Umask за замовчуванням для всієї системи

Отже, тепер ви знаєте як змінити Umask в робочому терміналі або в сесії. Але як зробити зміни перманентними?

Щоб измененить umask для користувача, найпростіший спосіб - створити команду umask NEWUMASK в

/.bashrc file від цього користувача (за умови, що він використовує Bash) або у відповідному файлі, який завантажується на самому початку цієї сесії з цієї оболонки.

Щоб змінити Umask для всіх ваших користувачів, ви повинні змінити деякі настройки системи, і це залежить від вашого дистрибутива Linux:

Debian 6, Ubuntu і Mint

В Debian воно може оброблятися за допомогою модулів PAM, pam_umask є модулем PAM для режиму створення файлу маски з поточною діяльністю. Дозвіл за замовчуванням Umask впливає на призначення новостворених файлів, щоб включити / змінити ці дозволи для редагування файлів:

І в кожен з цих файлів додайте рядок:

Таким чином, всі сесії будуть використовувати 0002 Umask, даючи групі дозвіл на запис файлів і каталогів.

Red Hat 6 і Centos 6

У цих розподілів загальний Umask записи в файл / etc / bashrc. Якщо ви відкриєте його (як корінь) і ви виконаєте пошук по слову "Umask", ви зможете знайти щось схоже:

Ці рядки встановлюють umask з 002 для всіх користувача, чиї UID більше 199 і назва групи таке ж як і ім'я користувача.

Таким чином, щоб змінити Umask для всіх, можна просто змінити всі ці рядки в цьому рядку:

Або будь-яке інше значення, яке вам потрібно.

Схожі статті