В первой части статьи мы рассмотрели что собой представляют права доступа в операционной системе MacOS X, и почему важно уметь управлять ими. Если Вы еще не прочитали первую (теоретическую) часть статьи, настоятельно рекомендуем сделать это.

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

 

Как Вы уже могли заметить, всего есть девять исходных прав доступа, каждое из которых может быть включено или выключено (почему девять? Потому что есть Read, Write, Execute для Владельца, Группы и Других). Всего существует 512 возможных комбинаций из прав доступа! (Почему 512? Потому что 2^9=512.)

Дабы упростить жизнь пользователям, в компании Apple придумали имена для наиболее часто используемых комбинаций прав доступа, вот они:

  • Read&Write: Пользователь может просматривать содержимое файла и вносить изменения;
  • ReadOnly: Пользователь может просматривать содержимое, но НЕ может изменять его;
  • WriteOnly: Пользователь может производить запись но не может просматривать содержимое. В первой части статьи я приводил пример использования права «WriteOnly» – это папка Drop Box которая есть у каждого пользователя. Все остальные пользователи могут сбрасывать файлы в папку Drop Box, но только владелец может видеть ее содержимое.
  • No Access: Доступ к обьекту отсутствует.

Любая из этих четырех предустановленных настроек может быть применена к каждому из трех классов пользователей (Владельцу, Группе и Другим) через окно «Info» Файндера.

Средства работы с правами доступа

Стоит заметить что работать с правами доступа можно (и даже нужно!) не только с помощью окна «Info» которое вызывается из программы Finder. Для управления правами доступа Вы можете использовать на свой вкус:

  • Окно «Info» программы Finder;
  • Специализированные программы для работы с правами доступа от сторонних разработчиков (про них мы еще поговорим отдельно);
  • Команды Unix и программу Терминал (это для любителей и знатоков командной строки).

Каждый из трех указанных выше способов работы с правами доступа имеет свои преимущества и недостатки, рассмотрим их…

Выбор инструмента для работы с правами доступа

Инструмент Преимущества Недостатки
Окно Info (вызывается по нажатию Cmd+I) Проще и интуитивно понятнее чем команды UNIX Ограниченные возможности. Значительно уступает в гибкости командам UNIX
Программы сторонних разработчиков Предоставляют гораздо больше возможностей чем окно Info Отсутствуют по умолчанию, приходится приобретать дополнительно
UNIX команды Значительно мощнее и гибче чем окно Info. Позволяют быстро управлять правами доступа, при условии конечно, что Вы хорошо знакомы с командной строкой UNIX Для новичков абсолютно не понятны 😉

Сейчас мы рассмотрим установку прав доступа с помощью окна Info и с помощью командной строки. Обзоры программ для работы с правами доступа от сторонних разработчиков выйдут как дополнение к этой статье.

Установка прав доступа с помощью окна Info

Для простых задач устанавливайте права доступа при помощи окошка Info. Окно Info не обеспечивает такого гибкого способа управления правами доступа как, например, команды UNIX. К примеру, вы не можете через окно Info управлять индивидуально любым из девяти прав. Тем не менее, установка прав на доступ через окошко Info чрезвычайно проста, и такой способ вполне достаточен в ежедневных ситуациях.

Для установки прав доступа посредством окна Info проделайте следующее:

1. Выделите нужный обьект в Finder’е;
2. Из меню File выберите Get Info, или, что гораздо проще, нажмите клавишную комбинацию Cmd+I. Кликните по раскрывающему треугольничку около надписи Ownership & Permissions, чтобы раскрылась детальная информация как показано на рис. 1;
3. Теперь можете сделать следующее: а) выбрать что разрешено делать с обьектом вам — из выпадающего меню You Can. Это меню может быть неактивно, если у вас нет прав на изменение этого файла (рис. 1-а). б) установить права на доступ разным категориям пользователей, или поменять владельца (рис. 1-б).

Значек замка около выпадающего меню говорит о том что для изменений этих атрибутов нужно иметь права администратора. Если замочек закрыт, кликните по нему и введите имя и пароль для учетной записи администратора.

4. Если обьект который вы выбрали является папкой, и вы хотите применить определенные права доступа для всего содержимого этой папки, нажмите кнопку Apply to Enclosed Items (рис. 1-б).
5. Закройте окно Info.

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

Обращение с командной строкой требует некоторых навыков, поэтому мы вначале повторим материал первой статьи, а именно – вспомним при помощи какой команды можно посмотреть права доступа, и немного поиграемся с командной строкой.

Запустите Terminal (/Applications/Utilities/Terminal) и введите команду:

ls -l

Команда «ls» предназначена для вывода содержимого какого-либо каталога в алфавитном порядке. Мы же используем команду «ls» с флагом «-l» – это означает что мы хотим вывести подробную информацию о каждом файле либо каталоге.

Введя команду ls -l сразу после запуска Терминала вы должны увидеть содержимое своей домашней директории, вот например такое (у вас должно быть то же самое):

andreys-powerbook:~ andrey$ ls -l
total 0
drwx—— 32 andrey andrey 1088 Jun 17 22:16 Desktop
drwx—— 27 andrey andrey 918 Jun 17 22:07 Documents
drwx—— 41 andrey andrey 1394 Jun 8 21:01 Library
drwx—— 3 andrey andrey 102 Mar 3 22:09 Movies
drwx—— 5 andrey andrey 170 May 3 22:13 Music
drwx—— 6 andrey andrey 204 Apr 10 21:53 Pictures
drwxr-xr-x 6 andrey andrey 204 May 28 22:51 Public
drwxr-xr-x 6 andrey andrey 204 May 10 20:16 Sites

Для сравнения, введите команду ls без флагов, вот так:

ls

Вы должны увидеть что-то такое:

andreys-powerbook:~ andrey$ ls
Desktop Library Music Public
Documents Movies Pictures Sites

Замечаете? В последнем случае мы не видим никакой дополнительной информации, только имена. А так как нас в первую очередь интересуют права доступа, то запомним правило:

Если хотим посмотреть права доступа то используем команду ls -l

Теперь научимся работать с этой командой. Если ввести

ls -l

то Терминал выведет содержимое текущей папки (то есть той, в которой вы в данный момент находитесь). А если после ls -l указать путь к конкретной папке то получим список содержимого указанной папки. Вернитесь в Терминал и наберите например:

ls -l Desktop

Вы должны получить список того что находится на вашем рабочем столе. Вот что у меня:

andreys-powerbook:~ andrey$ ls -l Desktop
total 5832
drwxr-xr-x 13 andrey andrey 442 Mar 29 22:20 2art
drwxrwxrwx 24 andrey andrey 816 Mar 28 21:34 APSetup
-rwxr-xr-x 1 andrey andrey 1586160 Jun 1 2005 M4V56052.MP4
drwxrwxrwx 21 andrey andrey 714 Jun 17 13:59 Nikkor
-rw-r–r– 1 andrey andrey 338317 Jun 14 23:21 PermQuiz.pdf
-rw-r–r– 1 andrey andrey 384 Jun 16 08:29 Untitled 4.txt
drwxr-xr-x 11 andrey andrey 374 May 4 08:58 WiFi
-rw-r–r– 1 andrey andrey 222 Mar 22 23:21 WiFiLinks.txt

Как мы помним из первой части статьи, в начале каждой строки с информацией об обьекте находятся права доступа. Если присмотреться внимательно к приведенному выше примеру с содержимым рабочего стола, то можно заметить что некоторые записи начинаются с буквы «d», а некоторые с минуса «–». Что это значит? «d» значит что это каталог (папка), а «–» – обычный файл.

Еще пара советов, которые напрямую не относятся к правам доступа. Для перемещения по каталогам в UNIX следует использовать команду

cd

Но если вы не знаете синтаксис этой команды, то воспользуйтесь следующим приемом – когда необходимо открыть какую-то папку в Терминале, наберите в Терминале команду:

cd

а затем просто перетащите нужную папку из окна Finder’a в окно Терминала и нажмите Return (Enter). Или воспользуйтесь вот этим скриптом [ссылка].

Итак, мы умеем перемещаться по папкам на компьютере и проверять права доступа (командой ls -l). Теперь научимся настраивать права доступа.

Создайте где-нибудь с помощью команды touch пустой файл с именем foo, для этого введите команду:

touch foo

(мы уже создавали таким образом файл в первой части статьи.) Это будет наш подопытный файл. Проверьте, какие права доступа по умолчанию поставила система на этот файл, для этого введите:

ls -l foo

Вы должны увидеть что-то типа этого:

andreys-powerbook:~ andrey$ ls -l foo
-rw-r–r– 1 andrey andrey 0 Jun 18 20:33 foo

Попробуем поизменять права доступа к файлу foo. Для изменения прав доступа в UNIX существует команда chmod. Эта команда позволяет установить права доступа по чтению, записи и выполнению для одного или более файлов. Синтаксис команды chmod следующий:

chmod код_защиты имя_файла(ов)

Код защиты, он же права доступа, может быть задан в символьном или восьмеричном виде.

Восьмеричный код защиты применяется, если необходимо установить полный код защиты файла. В этом случае невозможно установить одни права доступа без изменения остальных. Восьмеричный код защиты представляет собой число из 4 восьмеричных цифр, каждая из которых представляет три бита. Мы будем рассматривать только последние 3 восьмеричных цифры в коде защиты, поскольку первая цифра представляет информацию нас пока не интересующую. Биты обозначают следующие права доступа:

100 : Разрешение выполнения владельцу файла
200 : Разрешение записи владельцу файла
400 : Разрешение чтения владельцу файла

010 : Разрешение выполнения членам группы
020 : Разрешение записи членам группы
040 : Разрешение чтения членам группы

001 : Разрешение выполнения прочим пользователям
002 : Разрешение записи прочим пользователям
004 : Разрешение чтения прочим пользователям

Теперь представим, что мы хотим присвоить файлу какие-то особенные права доступа. Это очень просто! Пользуясь вышеприведенной табличкой сложите в столбик соответствующие нужным правам числа.

Например, давайте разрешим владельцу запись и чтение, членам группы вообще ничего не разрешим, а прочим пользователям разрешим чтение. Сложим в столбик соотв. числа:

200 разрешаем запись владельцу
+
400 разрешаем чтение владельцу
+
004 разрешаем чтение прочим пользователям
—-
=604

Мы получили число 604. Символьный аналог этих прав -rw—-r–.

Для того чтобы присвоить новые права файлу foo введите команду:

chmod 604 foo

И проверьте результат командой:

ls -l foo

Должно быть такое:

-rw—-r– 1 andrey andrey 0 Jun 18 20:33 foo.

С восьмеричным представлением прав доступа разобрались. Используйте восьмеричное представление когда хотите изменить все права доступа к файлу. Также удобно использовать восьмеричное представление в программах типа Transmit (гораздо удобнее чем ставить флажки мышкой).

Символьная форма позволяет установить выборочные биты кода защиты и имеет вид:

[ugoa][+-=][rwxstugo]

где:

u – владелец,
g – группа,
o – прочие,
a – все категории пользователей (по умолчанию),
+ – добавить к уже существующим битам прав указанные,
– – убрать указанные биты,
= – заменить на указанные биты,
r – чтение,
w – запись,
x – выполнение,
s – смена идентификатора пользователя или группы (мы это использовать не будем. Намек для любознательных – это имеет отношение к той первой восьмеричной цифре которую мы договорились не рассматривать, так как материал выходит за рамки данной статьи),
t – сохранение образа файла в области выгрузки (тоже не используем и не рассматриваем по той же причине),
ugo – оставить текущие значения бита доступа.

В первую очередь рассмотрим операции [+][-][=]. Для примера, вначале очистим все права на доступ к файлу foo (то есть отменим доступ совсем):

chmod a-rwx foo

Проверим результат командой ls -l, должно быть:

———- 1 andrey andrey 0 Jun 18 20:33 foo

Теперь разрешим всем запись и чтение:

chmod a+rw foo

В результате должны получить:

-rw-rw-rw- 1 andrey andrey 0 Jun 18 20:33 foo

Для демонстрации работы операции [=] наберите теперь:

chmod a=x foo

Должны получить:

—x–x–x 1 andrey andrey 0 Jun 18 20:33 foo

То есть в отличие от операции [+], операция [=] не добавляет указанные биты к существующим, а перезаписывает существующие на указанные.

Напоследок, установим более «приличные» права на наш многострадальный файл foo, а именно – разрешим владельцу чтение и запись, всем остальным – только чтение:

chmod a=r foo
chmod u+w foo

В результате должны получить:

-rw-r–r– 1 andrey andrey 0 Jun 18 20:33 foo

БОЛЬШАЯ И УБЕДИТЕЛЬНАЯ ПРОСЬБА ВСЕ ЭКСПЕРИМЕНТЫ ПО ИЗМЕНЕНИЮ ПРАВ ДОСТУПА ПРОВОДИТЬ ТОЛЬКО С ТЕСТОВЫМ ФАЙЛОМ. НИ В КОЕМ СЛУЧАЕ НЕ ЭКСПЕРИМЕНТИРУЙТЕ НА СВОИХ РАБОЧИХ ФАЙЛАХ, ИНАЧЕ МОЖЕТЕ ПОТЕРЯТЬ К НИМ ДОСТУП. ВСЕ ИЗМЕНЕНИЯ ВНОСИМЫЕ КОМАНДОЙ CHMOD СРАЗУ ПРОВЕРЯЙТЕ С ПОМОЩЬЮ КОМАНДЫ LS -L.

Файл foo можно удалить если он более не нужен:

rm foo

Вот мы и разобрались с управлением правами доступа. Самое время рассказать о том, как организовывать многопользовательскую работу на компьютере, создавать группы, обьединять в них пользователей и правильно выставлять права доступа для эффективной совместной работы. Но ввиду и так большого размера этой статьи, мы поговорим об этом в следующей, третей части. Следите за публикациями на нашем сайте!

Почти все о правах доступа, часть 1 | часть 3

Литература
Журнал MACWORLD
Книжка Р. Готье, «Руководство по операционной системе UNIX»