У 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 для всіх, можна просто змінити всі ці рядки в цьому рядку:
Або будь-яке інше значення, яке вам потрібно.