Секреты Терминала. Часть 3: Права доступа
Пришло время продолжить наш цикл статей о Терминале Mac OS X и премудростях его использования рядовыми пользователями. В предыдущей статье мы коснулись такого понятия, как права доступа. Эта тема заслуживает отдельной статьи, поскольку разграничение владельцев файлов и прав доступа — один из фундаментальных принциов *nix-систем и одна из главных причин появления странных неполадок в работе Мака.
Сегодня мы кратко расскажем вам о системе прав доступа и о связанных с ней командах Терминала: chown, chmod, chgrp и sudo.
Итак, главная заповедь: каждый объект в Mac OS X обязательно имеет своего пользователя-владельца. Например, владельцем почти всего содержимого вашей папки пользователя будете вы. Владельцем системных файлов будет пользователь root, т.е. главный администратор компьютера. Даже если объект номинально никому не принадлежит, он всё равно числится за виртуальным пользователем nobody.
Сразу возникает вопрос — а почему это кроме вас, законного владельца компьютера, есть ещё какой-то главный администратор root? Всё это нужно как раз по соображениям безопасности, именно такое разграничение и есть главный залог безопасности Mac OS X.
Если бы обычный пользователь имел права администратора root, то любая вредоносная программа сразу могла бы получить полный доступ ко всей системе, могла бы самостоятельно запуститься и удалить всё, что угодно. Поэтому права root-админа даются рядовому пользователю лишь на короткие промежутки времени, и всегда это сопровождается появлением окошка ввода пароля. Это окошко, вылезающее на экран при установке программ или изменении важнейших настроек системы, означает, что у текущего пользователя не хватает полномочий, и ему нужно подтвердить факт обладания компьютером путём ввода пароля.

Каждый пользователь принадлежит к определённой группе — как минимум, к одной. Обычные пользователи находятся в группе staff. Все, кто имеют административные привилегии, также принадлежат к группам admin и wheel. Существуют и другие группы: owner, everyone, authedusers (и ещё пара десятков).
Чтобы узнать все группы, в которые вы входите, наберите в терминале команду:
groups
Запомните важнейшую команду, которой вам придётся часто пользоваться:
sudo
Она позволяет выполнить какое-либо действие от имени пользователя root. Её можно ввести перед какой-то другой командой, например:
Тогда права root будут переданы вам только для одной этой команды. Есть и другой вариант — приобрести права root-пользователя до закрытия окна Терминала. Для этого введите:
Никогда не выполняйте от имени root никакие команды, назначение которых вам неизвестно. Всегда тщательно проверяйте правильность введённых команд, потому что в таком режиме работы испортить можно всё, что угодно, а вернуть обратно — нет.
В любом случае, команда sudo потребует от вас ввода пароля:
Пароль всегда вводится вслепую, т.е. вы не увидите на экране никаких символов. По завершении ввода пароля нажмите Enter, и вы увидите, что левая часть строки изменится на:
Это означает, что вы вошли в Терминал как root-пользователь.
Обычно команда sudo будет нужна для изменения каких-то системных настроек или просто для доступа к тем файлам, которые вам не принадлежат.
Теперь мы переходим к главному: собственно правам доступа. Эти права бывают трёх видов:
- на чтение (просмотр) объекта
- на запись (т.е. редактирование и удаление)
- на запуск объекта
Можно обладать одним, двумя или всеми тремя правами сразу.
Каждое право для одного и того же объекта задаётся в трёх форматах:
- непосредственно для владельца
- для группы пользователей, к которой принадлежит владелец
- для всех остальных
Права доступа обозначаются двумя способами: цифровым и буквенным.
Цифровой способ подразумевает написание трёхзначного числа: например, 775, 644, 444, 521, 700.
Первая цифра — это права для владельца.
- 4 означает право на чтение
- 2 означает право на запись
- 1 означает право на запуск
- 0 означает отсутствие всех трёх прав
Эти цифры суммируются, если несколько прав принадлежат пользователю одновременно:
- 5 (4+1) означает права на чтение и запуск
- 6 (4+2) означает права на чтение и запись
- 7 (4+2+1) означает полный спектр прав
Вторая цифра трёхзначного обозначения — права для группы владельца. Третья — права для всех остальных.
Теперь расшифруем приведённые выше примеры:
775:
владелец и его группа имеют полный доступ (4+2+1=7)
все остальные пользователи могут читать и запускать файл (4+1=5)
644:
владелец имеет право на чтение и запись (4+2=6)
все, кроме него, могут лишь прочитать файл (4)
444:
абсолютно все пользователи могут только читать файл, но сделать с ним ещё что-то невозможно
521:
владелец может читать и запускать файл (4+1=5)
группа владельца может редактировать файл (2)
все остальные имеют право лишь на запуск (1)
700:
эксклюзивные полные права доступа есть только у владельца (4+2+1)
А теперь приведём конкретный пример. Допустим, у вас есть папка.
- Если у вас есть только права на запись, вы сможете её только переименовать, но никак не заглянуть внутрь
- Если у вас есть права только на исполнение, то вы сможете открыть папку, но не увидите в ней никакого содержимого. Но если вы знаете имена лежащих там файлов, то сможете с ними работать.
- Если у вас есть права на чтение и исполнение, то вы сможете пользоваться всем содержимым папки, но не сможете её переименовать или изменить атрибуты
Буквенный способ всегда состоит из 10 символов и имеет следующий вид:
drwxrw-r-x
Первый символ показывает, с чем вы имеете дело:
Оставшиеся девять символов делятся на три группы по три знака. Первые три показывают права доступа владельца, вторые три — группы, третьи — всех остальных:
- r — право на чтение (read)
- w — право на запись (write)
- x — право на запуск (execute)
Если права нет, то на соответствующем месте ставится прочерк.
Есть ещё два специальных обозначения, обычно встречающиеся у папок:
- t — не позволяет пользователю удалять в данном каталоге чужие файлы, если у него нет права на запись в эти файлы
- s — означает, что файлы, создаваемые в каталоге, наследуют группу от каталога, а не от создателя файла
Таким образом, приведённый выше пример означает то же самое, что и 765.
Кстати, файл вполне может иметь и права доступа 000 . Тогда единственный, кто может что-то с ним сделать будет root-администратор. Стоит помнить о такой возможности хотя бы потому, что стоит быть аккуратным с этим. Кстати, в этом случае и сменить права назад сможет тоже только администратор. Будьте аккуратнее.
Вообще говоря, настоятельно рекомендуем выводить в терминал или в файл действия всех опасных команд, это здорово поможет при диагностике и исправлении ошибок, которые могли возникнуть, благо несколько табов в приложении помогут нам расположить вывод команд так, чтобы никто никому не мешал, а если выводить в файл — так вообще хорошо, ибо мы его посмотреть можем потом, когда закончим все нужные нам действия. Такая политика позволяет экономить время в будущем.
Теперь о том, как менять права доступа и владельцев файлов. Правом изменения прав доступа обладают владелец файла и пользователь root. Отсюда вывод — если у вас не получается поменять права, используйте команду sudo.
Для смены прав доступа используется команда
chmod
Она имеет следующий синтаксис:
chmod 755 /System/Library/Extensions
Через пробел указываются сами права и путь к файлу или папке.
У команды есть полезный параметр -R (именно заглавная R), который присваивает указанные права всем содержащимся внутри объекта файлам. То есть, чтобы выставить права 755 для всей папки Extensions из примера выше, нужно ввести:
chmod -R 755 /System/Library/Extensions
Для смены группы владельца используется команда
chgrp
Принцип работы тот же, что и у chmod, тоже действует параметр -R. Группу можно вводить как в текстовом формате, так и в цифровом. Запомните главные обозначения:
- 0 — wheel
- 20 — staff
- 80 — admin
сделает вашу папку с музыкой принадлежащей группе администраторов.
С командой chgrp связано две опции — -v и -c . Очень полезны, так как позволяют нам получать информацию о том, что же именно происходит, какие действия совершаются в результате выполнения. Первая, -v , показывает всю информацию, даже тогда, когда и менять-то ничего не пришлось, а вторая показывает только факт смены прав. Это может быть удобнее при больших количествах файлов.
Чтобы поменять самого владельца, нужна команда
chown
Её синтаксис такой:
chown (-R) владелец:группа путь
Владелец и его группа тоже могут указываться в текстовом формате, через двоеточие без пробела:
chown root:wheel /mach_kernel
или в цифровом формате. Обозначения групп см. выше, а вот обозначения пользователей:
- 0 — root
- -2 — nobody
- 501 — вы
Та же самая команда может выглядеть так:
Присваивает ядро системы пользователю root и группе wheel.
Права доступа у файлов в системе имеют свойство иногда неожиданно портиться. Обычно это вина криво сделанных установщиком программ. Какие последствия будет иметь невозможность доступа системы к важным файлам настроек, компонентов и расширений — объяснять не стоит. Поэтому запомните ещё две важные вещи:
- права по умолчанию для ядра системы (файл /mach_kernel): 644, владелец — root, группа — wheel
- права для папки кекстов (/System/Library/Extensions): 755, владелец — root, группа — wheel.
Эти два факта помогут вам решить многие проблемы со странной или некорректной работой системы. Если это не поможет, запустите Дисковую утилиту из папки Программы/Служебные программы, выберите там раздел и нажмите кнопку Восстановить права доступа.

Запустить Дисковую утилиту можно и с установочного DVD Mac OS — через верхнее меню.
На сегодня информации достаточно. Следующая статья будет посвящена копированию, переименованию и удалению объектов.
Как менять права доступа или владельца для папок в Linux (MacOS)

Заметки линуксойда
Начинающие linux администраторы сталкиваются с проблемами вызванными непониманием того как работают права пользователей в nix-системах.
В любой операционной системе, будь то Linux, Windows или FreeBSD, корректная работа приложений, сервисов и безопасность системы в целом напрямую зависит от прав доступа на файлы и папки.
Основа философии Linux — все объекты операционной системы — это файлы, для предоставления доступа к тем или иным возможностям системы мы просто даем доступ пользователю к нужным файлам или убираем.
При создании файла тот пользователь, от имени которого он был создан становится его владельцем, а группой устанавливается основная группа владельца. Но владельца файла и группу можно менять, для этого используются команды chown и chgrp. В этой статье будет рассмотрена команда chown linux, а также основные примеры её использования.
Сменить владельца для всех папок и файлов. Для этих целей в Unix используется команда chown.
Синтаксис chown, как и других подобных команд linux очень прост:
$ chown пользователь опции /путь/к/файлу
В поле пользователь надо указать пользователя, которому мы хотим передать файл. Также можно указать через двоеточие группу, например, пользователь:группа. Тогда изменится не только пользователь, но и группа. Вот основные опции, которые могут вам понадобиться:
- -c, —changes — подробный вывод всех выполняемых изменений;
- -f, —silent, —quiet — минимум информации, скрыть сообщения об ошибках;
- —dereference — изменять права для файла к которому ведет символическая ссылка вместо самой ссылки (поведение по умолчанию);
- -h, —no-dereference — изменять права символических ссылок и не трогать файлы, к которым они ведут;
- —from — изменять пользователя только для тех файлов, владельцем которых является указанный пользователь и группа;
- -R, —recursive — рекурсивная обработка всех подкаталогов;
- -H — если передана символическая ссылка на директорию — перейти по ней;
- -L — переходить по всем символическим ссылкам на директории;
- -P — не переходить по символическим ссылкам на директории (по умолчанию).
Таким образом, команда для смены смены владельца (и группы владельцев) для директорий и всех вложенных папок и фалов будет выглядеть так:
Настройка прав доступа к файлам, папкам и дискам на Mac

Настройки прав доступа определяют, кто может просматривать и изменять файлы на компьютере. Настройки прав доступа файла, папки или диска можно изменить в нижней части окна «Свойства». Это окно можно открыть в Finder. Например, можно изменить права доступа папки так, чтобы другие пользователи этого Mac или пользователи, подключающиеся к нему для доступа к файлам, могли просматривать файлы в папке, но не могли изменять их.

Назначение прав доступа пользователям и группам

- На Mac выберите диск, папку или файл, затем выберите «Файл» > «Свойства».
- Если информация в разделе «Общий доступ и права доступа» не отображается, нажмите стрелку . (Возможно, потребуется прокрутить вниз.)
- Выберите пользователя или группу в столбце «Имя», нажмите всплывающее меню и выберите настройки прав доступа.
- Чтение и запись. Пользователь сможет открывать объект и изменять его.
- Только чтение. Пользователь сможет открывать объект, но не сможет изменять его.
- Только запись (почтовый ящик). Преобразует папку в папку типа «почтовый ящик». Пользователи смогут копировать объекты в такую папку, но не смогут открывать ее. Открыть «почтовый ящик» может только его владелец.
- Нет доступа. Блокируется любой доступ к объекту.

Пока открыто окно «Свойства», можно отменить любые изменения прав доступа пользователя или группы в разделе «Общий доступ и права доступа». Прежде чем закрыть окно «Свойства», нажмите всплывающее меню действий в нижней части окна, затем выберите «Отменить изменения».
Применение прав доступа ко всем объектам в папке или на диске
- На Mac выберите папку или диск, затем выберите «Файл» > «Свойства».
- Если информация в разделе «Общий доступ и права доступа» не отображается, нажмите стрелку
рядом с разделом «Общий доступ и права доступа». (Возможно, потребуется прокрутить вниз.) - Нажмите всплывающее меню действий
в нижней части окна, затем выберите «Применить к вложенным объектам».
Смена владельца объекта
- На Mac выберите объект, затем выберите «Файл» > «Свойства».
- Если информация в разделе «Общий доступ и права доступа» не отображается, нажмите стрелку
рядом с разделом «Общий доступ и права доступа». (Возможно, потребуется прокрутить вниз.) - Если имя нового владельца отсутствует в столбце «Имя» (в разделе «Общий доступ и права доступа»), нажмите кнопку «Добавить»
, чтобы добавить нового владельца. - Выберите нового владельца в столбце «Имя», нажмите всплывающее меню действий
в нижней части окна, затем выберите «Сделать [имя пользователя] владельцем».

Пока открыто окно «Свойства», можно отменить любые изменения владельца объекта в разделе «Общий доступ и права доступа». Прежде чем закрыть окно «Свойства», нажмите всплывающее меню действий в нижней части окна, затем выберите «Отменить изменения».
Добавление и удаление пользователей и групп в столбце «Имя».
- На Mac выберите объект, затем выберите «Файл» > «Свойства».
- Если информация в разделе «Общий доступ и права доступа» не отображается, нажмите стрелку
рядом с разделом «Общий доступ и права доступа». (Возможно, потребуется прокрутить вниз.) - В разделе «Общий доступ и права доступа» выполните любое из указанных ниже действий.
- Добавление пользователя или группы. нажмите кнопку «Добавить»
под списком, выберите пользователя или группу, затем нажмите «Выбрать». - Удаление пользователя или группы. выберите пользователя или группу, затем нажмите кнопку «Удалить»
под списком.
- Добавление пользователя или группы. нажмите кнопку «Добавить»

Пока открыто окно «Свойства», можно отменить добавление или удаление пользователя или группы в разделе «Общий доступ и права доступа». Прежде чем закрыть окно «Свойства», нажмите всплывающее меню действий в нижней части окна, затем выберите «Отменить изменения».
Если Вам не хватает прав доступа для открытия объекта на Mac

Если у Вас нет прав доступа, необходимых для открытия файла или папки, Вы можете попробовать поменять права доступа.
- На Mac выберите объект, затем выберите «Файл» > «Свойства» или нажмите сочетание клавиш Command-I.
- Нажмите стрелку
рядом с разделом «Общий доступ и права доступа», чтобы отобразить весь этот раздел. - Нажмите всплывающее меню рядом со своим именем пользователя, чтобы увидеть настройки прав. Если Вы вошли в систему не как администратор, Вам нужно нажать значок с изображением замка
, чтобы открыть замок, затем ввести имя и пароль администратора (или использовать Touch ID или Apple Watch). - Установите права на «Чтение и запись» или «Только чтение».
Если Вы не можете поменять права доступа, обратитесь к администратору Вашего компьютера Mac или к владельцу файла или папки.