Umask у Mac OS X, базові поняття

З цієї статті ви дізнаєтесь:

Що таке umask у Mac OS X?

Які функції виконує umask у Mac OS X?

У той момент, коли ви створюєте файл або папку в OS X, система спочатку не знає, який рівень доступу надати новим об'єктом, і застосовує повні права для кожного (або так званий рівень 7). Саме в цей момент до системних процесів вступає umask, працюючи як фільтр, знижуючи цінність наданого доступу для всіх учасників системи. Як ви розумієте, робиться це з метою безпеки.

Давайте подивимося на роботу umask в середовищі Mac OS X. Для цього нам потрібно відкрити термінал (Програма термінал в OS X знаходиться в папці "Утиліти", серед усіх програм, що встановлюються на вашій системі). Отже, у відкритому терміналі набираємо команду umask і у відповідь, швидше за все, отримуєте значення схоже на "0022".

umask

Перші нуль у цьому списку нам не цікавий (він відповідає за SetUID, SetGID - це інструмент, що визначає ID користувача, і ID групи під час виконання будь-яких завдань). Інструмент не такий важливий для повсякденних завдань, і тому ми його пропустимо. Нас більше цікавить наступні три значення 022, які є маскою дозволів для користувача, групи та решти, відповідно.

Виходить, що будучи маскою цей системний компонент накладає відбиток на рівні доступу, оскільки вони віднімаються від початкових прав (7-го рівня), тим самим підганяючи дозволи за замовчуванням того виду який ми спостерігаємо після створення нових об'єктів.

базові

Виходить, що umask системи рівний 022 розподілятиме права на доступ до нових файлів наступним чином. Створюється новий файл, з правами доступу рівними 777 (де будь-які дії із системою можуть виконувати будь-які користувачі), потімзастосовується umask, і права отримують наступний 755 (де користувач не втрачає в доступі так як на нього поставлено "0", а всі інші отримують можливість читати і виконувати створені об'єкти). Відповідно якби umask замість 022 дорівнював 000, в системі творилися неймовірні "чудеса" так як права адміністратора мав будь-який проходить повз. Така ситуація абсурдна і у повсякденній "реальності" не трапляється. Втім, як і umask рівний 777, ніхто, крім самої системи, не має доступу до неї (комп'ютерний вакуум).

Таким чином, umask ділиться доступом і призначає пріоритети за умовчанням. umask застосовується до всіх файлів і папок, створених у системі, і не важливо, де ці об'єкти створені, у спільній папці або в приватній. Єдиними папками під вашим обліковим записом, які мають приватні установки доступу за промовчанням, є Документи, Робочий стіл, Музика, Фільми та інші вбудовані директорії. Якщо ви створите нову папку поруч із ними, umask зробить його як мінімум зручним для читання всім. Фактично, файли та папки, які створюються в межах папок Документи та Музика (а також інші директорії за замовчуванням) мають дозволи, що відкривають доступ іншим користувачам, при цьому обмеженість дозволів самих каталогів Документи та Музика є перешкодою, що закриває доступ.

Ви запитаєте як змінити umask?

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

У переважній більшості випадків ці обмеження стосуються системних процесів, а не самого облікового запису користувача. Тому зміна umask глобально може призвести до проблем, але в той же час регулювання діяльності користувача в системі може бути корисним.

Найдивовижніше полягає в тому, що призначення прав на рівні системи, зміна umask здійснюється досить просто. Достатньо в терміналі набрати команду umask 011 і маска зміниться зі стандартної 022 на 011.

Якщо ви наберете umask зі значенням потрібним саме вам із терміналу, це безумовно вплине на створення нових файлів і папок у поточній сесії. Що це означає? Це означає, що після завершення та наступного входу в термінал, значення набуде початкового вигляду. Відповідно Finder та інші програми системи не будуть порушені. Зміна umask на рівні системи процес складніший, і вимагає втручання в конфіги системи, які починають працювати після повного перезавантаження. Зміни відбуваються лише на рівні (launchd).

Launchd - це процес запуску/перезапуску процесів, що використовується в Mac OS X. Має ID рівний 1, є аналогом init в Linux. Приховуючись від очей користувача Launchd і виконуючи непомітні дії, саме він спілкується з umask, а отже будь-які установки глобальної зміни прав для umask налаштовуються через нього.

Зміни umask на рівні launchd, призведе до змін у роботі Finder та інших програм, які Ви запускаєте з-під свого облікового запису.