FreeBSD: принцип назначения прав на файлы, каталоги и устройства

Принцип назначения прав на файлы, каталоги и устройства (а каталоги и устройства тоже представлены как файлы) во FreeBSD очень прост.

Права бывают трех типов: на чтение/запись/исполнение (rwx). Кроме того, права могут прикладываться только к трем объектам: владельцу, группе, которой принадлежит файл, и всем остальным. Таким образом, права на любое устройство/файл задаются комбинацией из 9 бит. Записывается это так:
rwxrwxrwx
что означает - владельцу назначены все права (на чтение, запись и выполнение) группе назначены все права, всем назначены все права (редко встречающаяся ситуация), или:
rwxr-xr--
что означает - владельцу назначены все права, группе на чтение и выполнение, а всем только на чтение.

Права на файлы можно посмотреть командой ls -l папка/или_файл, они будут выведены в первом столбце. Причем первый символ в столбце означает не права, а тип файла (l link, - файл, d directory). В следующих столбцах будет выведены имя пользователя-владельца (3-й столбец) и группа, которой он принадлежит (4-й столбец).
Каталог /dev содержит все устройства, представленные в виде файлов, которые можно открывать, читать и писать в них.

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

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

Для изменения прав применяется команда chmod. В синтаксисе командной строки она использует "Символические обозначения прав":
Опция Буква Значение
(кто) u Пользователь (User)
(кто) g Группа (Group)
(кто) o Другие (Other)
(кто) a Все (All, ''world'')
(действие) + Добавление прав
(действие) - Удаление прав
(действие) = Явная установка прав
(права) r Чтение (Read)
(права) w Запись (Write)
(права) x Выполнение (Execute)
(права) t Sticky бит
(права) s SUID или SGID
Например, вы можете использовать следующую команду для запрета доступа других пользователей к FILE:
% chmod go= FILE
Для изменения более чем одного набора прав можно применить список, разделенный запятыми. Например, следующая команда удалит права группы и ''всех остальных'' на запись в FILE, а затем добавит права на выполнение для всех:
% chmod go-w,a+x FILE
Можно также задавать права в цифровом восьмеричном виде:
% chmod 600 logfile

Обновлено: 12.03.2015