ryg

chmod. Команда терминала в Mac OS X

Назначение команды:

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

Синтаксис:

chmod [-fv] [-R [-H | -L | -P]] mode file ...
chmod [-fv]  [-R [-H | -L | -P]] [-a | +a | =a] ACE file ...
chmod [-fhv] [-R [-H | -L | -P]] [ACL_Option] file ...

Параметры:

-R Рекурсия. Используется для папок. Меняет права не только для указанного объекта, но для всех вложенных в него
-R -H Следовать за символьными ссылками в командной строке. По умолчанию символьные ссылки не обрабатываются
-R -L  Все символьные ссылки будут обработаны
-R -P  Дерево ссылок обрабатываться не будет. Параметр по умолчанию.
-v  Многословный. Показывает все файлы, которые были изменены
-v -v очень многословный режим. Будет выведено старые и новые права в восьмеричном (числовой) и буквенном режиме отображения
-f не отображать диагностические сообщения в случае невозможности изменения прав доступа к файлу

 

ACL_Option (ACL - списки контроля доступа для групп пользователей)

 

-E Прочитать информацию ACL из stdin как последовательный список ACE (записи управления доступом) построчно. Если разбор записей был произведен корректно, то существующая информация будет заменена
-C Возвращает ложь если хотя бы одно из имен файла в ACL находится не в канонической последовательности
-N  удалить ACL из указанных файлов

 

ACL_manipulation_options
+a mode добавить новую точку входа ACL
+a# mode  добавить новую точку входа ACL в определенном порядке
-a mode удалить новую точку входа ACL
=a# mode  переписать точку входа
-i    Удаляет бит наследования со всех точек входа указанных файлов  ACL.
-I    Удаляет все наследования с указанных файлов ACL(s).

Права доступа:

Прав доступа могут быть указаны в буквенном коде или числовом на основе восьмеричной системы счисления

Управление с помощью цифрового указания прав доступа:

Для управления правами используется три бита

  • первый - право на чтение
  • второй -право на запись
  • третий -право на выполнение
Побитно Число  Буквенный код описание права
000 0   нет прав
001 1   право только на исполнение
010 2   право только на запись
011 3   право на запись и исполнение
100 4   право только на чтение
101 5   право на чтение и исполнение
110 6   право на чтение и запись без исполнения
111 7   все права
    
Такие права на файл устанавливаются для трех видов доступа:
  • для владельца
  • для группы
  • для остальных

В итоге команда выглядит следующим образом:

$ chmod 444 file     -право только на чтение для всех

$ chmod 755 file     -владелец имеет все права (7), остальные пользователи только чтение и запуск (5)

$ chmod 066 file      -владелец не имеет никаких прав на файл (0), все остальные право на чтение и запись без выполнения

Управление с помощью буквенного указания прав доступа:

Формат указания прав символьным кодом

[кто...][[+-=][права...]...][,...]

кто - это комбинация символов 'ugoa' указывающая на пользователей чьи права на доступ к файлу или папке будут изменены

  • u пользователь собственник
  • g группа пользователей
  • o остальные пользователи
  • a (all) для всех, аналогично ugo

операторы:

  • '+' - показывает что эти права должны быть добавлены
  • '-'  -  показывает, что эти права должны быть изъяты
  • '=' - показывает, что только эти права должны быть, а существующие удалены

буквенные обозначения прав:

  • r         (read) право на чтение
  • w       (write) право на запись
  • x        (Execute/search) право на запуск или доступ в папку 
  • X        Execute/search only if the file is a directory or already has execute permission for some user
  • s         Set user or group ID on execution
  • t          позволяет пользователю удалять файлы в папке даже если у него нет прав на запись в эти файлы

Примеры:

Запретить исполнение для всех:

		$ chmod a-x file

Разрешить чтение для всех:
		$ chmod a+r file
Сделать файл доступным для чтения и записи для групп и остальных:
		$ chmod go+rw file
Сделать скрипт исполняемым для пользователя/собственника:
		$ chmod u+x myscript.sh
Связанные команды и ссылки  
 
chown - Поменять собственника файла и группу
chflags - Поменять "флаги" файлов и папок
rsync -Копирование файлов и синхронизация дерева каталогов
mount - смонтировать файловую систему
umask - Пользовательская маска файла
ls - вывести список файлов
mkdir -создать папку
Весь список команд терминала OS X