Права доступа
FreeBSD является прямым потомком BSD UNIX® и основывается на некоторых ключевых концепциях UNIX. В первую очередь это, конечно, тот факт, что FreeBSD - многопользовательская операционная система. Это означает, что несколько пользователей могут работать одновременно, решая различные задачи и совершенно не мешая друг другу. На системе лежит ответственность за правильное разделение и управление такими ресурсами как память, процессорное время, периферийные устройства и прочее.
Многопользовательская среда предполагает наличие механизма регулирования прав доступа к любому ресурсу в системе. Существует три типа прав доступа: на чтение, запись и исполнение. Права сгруппированы три по три, соответственно чтение/запись/выполнение для владельца/группы/всех остальных. Численное представление:
Значение |
Права доступа |
Список файлов каталога |
---|---|---|
0 |
Ничего не разрешено |
--- |
1 |
Нельзя читать и писать, разрешено исполнять |
--x |
2 |
Нельзя читать и исполнять, разрешено писать |
-w- |
3 |
Нельзя читать, разрешено писать и исполнять |
-wx |
4 |
Разрешено читать, нельзя писать и исполнять |
r-- |
5 |
Разрешено читать и исполнять, нельзя писать |
r-x |
6 |
Разрешено читать и писать, нельзя исполнять |
rw- |
7 |
Разрешено все |
rwx |
Вы можете использовать опцию -lкоманды ls(1)для получения подробного листинга каталога, включающего колонку с информацией о правах на файл для владельца, группы и всех остальных. Например, команда ls -lв произвольном каталоге может вывести следующее:
% ls -l
total 530
-rw-r--r-- 1 root wheel 512 Sep 5 12:31 myfile
-rw-r--r-- 1 root wheel 512 Sep 5 12:31 otherfile
-rw-r--r-- 1 root wheel 7680 Sep 5 12:31 email.txt
...
Вот как выглядит первая колонка вывода ls -l:
-rw-r--r--
Первый (считая слева) символ говорит обычный ли это файл, каталог, символьное устройство, сокет или любое другое псевдо-файловое устройство. В нашем случае -указывает на обычный файл. Следующие три символа (в данном случае это rw-) задают права доступа владельца файла. Затем идут права группы, которой принадлежит файл (r--). Последняя тройка (r--) определяет права для всех остальных. Минус означает отсутствие каких-либо прав (т.е. нельзя ни читать, ни писать, ни выполнять). В данном случае права установлены таким образом, что владелец может читать и писать в файл, а группа и другие могут только читать. Таким образом, численное представление прав 644, где каждая цифра представляет три части прав на файл.
Права на устройства контролируются аналогичным образом. В FreeBSD все устройства представлены в виде файлов, которые можно открывать, читать и писать в них. Эти специальные файлы содержатся в каталоге /dev.
Каталоги также являются файлами. К ним применимы те же права на чтение, запись и выполнение. Правда, в данном случае ''выполнение'' имеет несколько другой смысл. Когда каталог помечен как ''исполнимый'', это означает, что можно ''зайти'' в него (с помощью команды cd, change directory). Это также означает, что в данном каталоге можно получить доступ к файлам, имена которых известны (конечно, если собственные права на файл разрешают такой доступ).
Если же требуется получить список файлов в некотором каталоге, права доступа на него должные включать доступ на чтение. Для того, чтобы удалить из каталога какой-либо файл, имя которого известно, на этот каталог должны быть даны права на запись и на исполнение.
Существуют и другие права доступа, но они как правило используются в особых случаях, например, setuid-бит на выполняемые файлы и sticky-бит на каталоги. За дополнительными сведениями по этому вопросу обращайтесь к chmod(1).
3.3.1. Символические обозначения прав
Предоставил Tom Rhodes.
Символические обозначения, иногда называемые символическими выражениями, используют буквы вместо восьмеричных значений для назначения прав на файлы и каталоги. Символические выражения используют синтаксис (кто) (действие) (права), где существуют следующие значения:
Опция |
Буква |
Значение |
---|---|---|
(кто) |
u |
Пользователь (User) |
(кто) |
g |
Группа (Group) |
(кто) |
o |
Другие (Other) |
(кто) |
a |
Все (All, ''world'') |
(действие) |
+ |
Добавление прав |
(действие) |
- |
Удаление прав |
(действие) |
= |
Явная установка прав |
(права) |
r |
Чтение (Read) |
(права) |
w |
Запись (Write) |
(права) |
x |
Выполнение (Execute) |
(права) |
t |
Sticky бит |
(права) |
s |
SUID или SGID |
Эти значения используются командой chmod(1)так же как и раньше, но с буквами. Например, вы можете использовать следующую команду для запрета доступа других пользователей к FILE:
% chmod go= FILE
Для изменения более чем одного набора прав можно применить список, разделенный запятыми. Например, следующая команда удалит права группы и ''всех остальных'' на запись в FILE, а затем добавит права на выполнение для всех:
% chmod go-w,a+x FILE
3.3.2. Флаги файлов в FreeBSD
Текст предоставил Tom Rhodes.
Кроме уже описанных прав доступа к файлам, FreeBSD поддерживает использование ''флагов файлов''. Эти флаги обеспечивают дополнительный уровень защиты и контроля над файлами, но не могут применяться к каталогам.
Эти флаги добавляют дополнительные возможности контроля над файлами, обеспечивая (при определенных условиях) невозможность их удаления или изменения даже пользователю root.
Файловые флаги изменяются при помощи утилиты chflags(1)посредством простого интерфейса. К примеру, чтобы установить системный признак неудаляемости на файл file1, выполните следующую команду:
# chflags sunlink file1
Чтобы отключить флаг неудаляемости, просто выполните предыдущую команду с ключом ''no'' перед параметром sunlink. Вот так:
# chflags nosunlink file1
Чтобы просмотреть флаги этого файла, воспользуйтесь командой ls(1)с параметрами -lo:
# ls -lo file1
Результат выполнения команды должен выглядеть примерно так:
-rw-r--r-- 1 trhodes trhodes sunlnk 0 Mar 1 05:54 file1
Некоторые флаги могут быть установлены или сняты с файлов только пользователем root. В остальных случаях эти флаги может установить владелец файла. Для получения дополнительной информации мы рекомендуем изучить содержимое справки по командам chflags(1)и chflags(2).