Управление правами доступа при помощи командной строки

Mac OS X, Tips & Tricks ,

Управление правами доступа при помощи командной строкиКроме графического интерфейса Finder есть другой способ редактирования прав доступа, который даёт возможность более тонкой их настройки — это приложение Терминал и командная строка. В этом нам помогут две команды: chmod и chown. Конечно же, как и в любом другом деле, использовать эти команды стоит, если точно понимаешь, что хочешь сделать и зачем, иначе можно что-нибудь и сломать.

Для лучшего понимая этой статьи желательно ознакомиться с общей информацией об управлении правами доступа в Mac OS X.

Отображение прав доступа в командной строке

Для начала стоит рассмотреть, как отображается информация о правах в консоли, для этого выполним команду ls -l:
Пример отображения информации о правах доступа в командной строке
Как видно на скриншоте вывода команды, папка Desktop содержит три файла, ну или объекта, если говорить техническими терминами:

Символьная нотация

Нас интересует первый столбец вывода, где отображаются загадочные:

-rw-r--r--+
drwxr-xr-x
lrwxr-xr-x

Это наиболее распространённый способ отображения прав в командной строке, называемый символьная нотация.

Первый символ обозначает тип файла.

Типы файлов в символьной нотации
Символ Тип файла
- Файл
d Директория
l Символьная ссылка (это L в нижнем регистре, если что)

Я в своей жизни пока не встречался с другими типами файлов, но английская википедия говорит, что они существуют.

Следующие символы объединены в группы по три (триады), где каждая группа отображает права для определённого типа пользователя.

Соответствие триады типу пользователя
Триада Тип пользователя
1-я rwxrwxrwx Владелец файла (owner)
2-я rwxrwxrwx Назначенная группа (group)
3-я rwxrwxrwx Все остальные (everyone)

Внутри каждой триады символы обозначают конкретное право или же его отсутствие. Как я уже упоминал, права в стандартной системе POSIX могут быть трёх видов:

  • r — право на чтение (read),
  • w — право на запись (write),
  • x — право на выполнение (execute) для скриптов и приложений. Для директорий право на выполнение отличается тем, что обозначает право открыть директорию, то есть право на доступ к содержимому папки.

Также символы привязаны к своей позиции, то есть на 1-м месте всегда обозначается чтение, на 2-м запись, на 3-м выполнение. Если указана буква r, w или x, значит пользователь имеет данное право, если указан знак минус -, значит у пользователя данное право отсутствует.

Обозначение прав внутри триады
Символ Обозначение Значение
1-й r--r--r-- Чтение разрешено
2-й -w--w--w- Запись разрешена
3-й --x--x--x Выполнение файла (доступ к содержимому директории) разрешено

Таким образом, например, запись -rw-r--r-- означает, что это файл, владелец которого (owner) имеет доступ на чтение и запись, группа (group) и все остальные (everyone) имеют доступ только на чтение, и никто не имеет права на выполнение файла.

Цифровая нотация

Кроме символьной нотации, существует ещё цифровая. Суть в том, что каждому типу доступа соответствует своя восьмеричная цифра. Восьмеричности можно не пугаться, потому что цифры, обозначающие права, просто меняются от нуля до семи.

Обозначение прав в цифровой нотации
Цифра Аналог в символьной нотации Значение
0 --- Ничего не разрешено
4 r-- Чтение разрешено
2 -w- Запись разрешена
1 --x Выполнение разрешено

А при сочетании они просто складываются.

Сочетание прав в цифровой нотации
Цифра Аналог в символьной нотации Разрешено
3 -wx Запись и выполнение
5 r-x Чтение и выполнение
6 rw- Чтение и запись
7 rwx Чтение запись и выполнение

Как вы, наверное, уже догадались, три цифры вместе обозначают права по принципу 1-я цифра для владельца, 2-я для группы, 3-я для всех остальных. Вот пример того, как выглядит стандартный набор прав для файла и директории соответственно:

Соответствие цифровой и символьной нотации
Цифровая Символьная
644 rw-r--r--
755 rwxr-xr-x

Управление правами доступа

Для изменения прав доступа используется команда chmod, что является сокращением от change mode. Она имеет следующий синтаксис:

chmod mode file

где:

  • mode — это необходимый набор прав, его можно указывать в символьной или цифровой нотации,
  • file — это файл (путь до файла и его имя) или директория; можно указывать несколько файлов и директорий через пробел.

При использовании цифровой нотации, просто указываются права, которые вы хотите получить. В символьной нотации необходимо указывать тип пользователя, оператор и необходимые права.

Пользователь указывается буквами или их сочетанием:

Обозначение классов пользователей
Обозначение Класс пользователя
u Права будут применены для владельца файла.
g Права будут применены для группы.
o Права будут применены для всех остальных.
a Права будут применены для владельца, группы и остальных. Аналогично тому, как если бы было указано ugo.

Если тип пользователя не указан, то по умолчанию используется опция a или ugo и указанные после оператора права будут назначены для всех типов пользователей.

Оператор указывается символами:

Обозначение классов пользователей
Обозначение Класс пользователя
+ Добавить указанные права указанным типам пользователей.
- Убрать указанные права у указанных типов пользователей.
= Для указанных типов пользователей права будут предопределены указанным значением.

Права же указываются просто сочетанием из r (чтение), w (запись) и x (выполнение).

Примеры использования команды chmod:

  • chmod 644 file — установит права на чтение и запись для владельца файла и только на чтение для группы и остальных: rw-r--r--,
  • chmod 755 file — установит права на чтение, запись и выполнение для владельца файла и только на чтение и выполнение для группы и остальных: rwxr-xr-x,
  • chmod +x file — установить право на выполнение для всех трёх типов пользователей (владельца, группы и остальных),
  • chmod ug=rw file — установить владельцу и группе право на чтение и запись: rw-rw-r--, при этом права для остальных изменены не будут и останутся такими же, как и до выполнения команды.

Пример изменения прав доступа в командной строке

Изменение группы и владельца файла

Для изменения владельца или группы файла существует команда chown, что является сокращением от change owner. Она имеет следующий синтаксис:

chown user[:group] file

где:

  • user — имя пользователя, который будет назначен владельцем файла. Имя пользователя может быть не указано, если указана группа, и в таком случае владелец файла изменён не будет;
  • [:grop] — имя группы, которая будет назначена файлу. Если группа не указана, то она не будет изменена;
  • file — это файл (путь до файла и его имя) или директория. Можно указывать несколько файлов и директорий через пробел.

Примеры использования команды chown:

  • chown root file — изменить владельца файла на root (системный пользователь с правами администратора),
  • chown ixrevo:staff file — изменить владельца файла на пользователя ixrevo, а группу файла изменить на staff,
  • chown :staff file — изменить группу файла на staff.

Отображение прав доступа ACL в командной строке

Вас, наверное, волнует вопрос, что значит плюс -rw-r--r--+ в конце строки? Это значит, что на файл, кроме стандартных прав доступа, назначены ACL права. Чтобы их увидеть, надо выполнить команду ls -le:
Пример отображения прав ACL в командной строке

Для изменения прав ACL можно использовать команду chown с параметром +a и ‑a, но поскольку там очень много вариантов прав доступа, их описание выходит за рамки этой статьи, потому что я хотел дать краткий обзор и базовые знания по изменению прав доступа в командной строке.

Добавить комментарий