Еще одна рабочая неделя началась со сборки ядра. Под киссФМ отлично собирается, а пока есть время напишу заметку о правах доступа
Значение | Права | Представление |
0 | Ничего не разрешено | – – – |
1 | Нельзя читать и писать, разрешено исполнять | – – x |
2 | Нельзя читать и исполнять, разрешено писать | – w – |
3 | Нельзя читать, разрешено писать и исполнять | -wx |
4 | Разрешено читать, нельзя писать и исполнять | r – – |
5 | Разрешено читать и исполнять, нельзя писать | r-x |
6 | Разрешено читать и писать, нельзя исполнять | rw- |
7 | Разрешено все | rwx |
Как посмотреть права?
% ls -l total 16 -rw-r--r-- 1 bos bos 763 Jun 25 08:21 .cshrc -rw-r--r-- 1 bos bos 261 Jun 25 08:21 .login -rw-r--r-- 1 bos bos 171 Jun 25 08:21 .login_conf -rw------- 1 bos bos 383 Jun 25 08:21 .mail_aliases -rw-r--r-- 1 bos bos 343 Jun 25 08:21 .mailrc -rw-r--r-- 1 bos bos 789 Jun 25 08:21 .profile -rw------- 1 bos bos 288 Jun 25 08:21 .rhosts -rw-r--r-- 1 bos bos 983 Jun 25 08:21 .shrc
Разберем одну из строк более детально
-rw-r–r– 1 bos bos 763 Jun 25 08:21 .cshrc
Первый (считая слева) символ говорит обычный ли это файл, каталог, символьное устройство, сокет или любое другое псевдо-файловое устройство.
– Отсутствие флага
l лат. «л» Символическая ссылка (symbolic link)
d Директория (directory)
b Блочное устройство (block device)
c Символьное устройство (character device)
p Канал, устройство fifo (fifo device)
s Unix сокет (unix domain socket)
В нашем случае – указывает на обычный файл.
Следующие три символа (в данном случае это rw) задают права доступа владельца файла. Затем идут права группы, которой принадлежит файл (r).
Последняя тройка (r) определяет права для всех остальных.
Минус означает отсутствие каких-либо прав (т.е. нельзя ни читать, ни писать, ни выполнять). В данном случае права установлены таким образом, что владелец может читать и писать в файл, а группа и другие могут только читать. Таким образом, численное представление прав 644, где каждая цифра представляет три части прав на файл.
Права на устройства контролируются аналогичным образом. В UNIX все устройства представлены в виде файлов, которые можно открывать, читать и писать в них. Эти специальные файлы содержатся в каталоге /dev.
Каталоги также являются файлами. К ним применимы те же права на чтение, запись и выполнение. Правда, в данном случае ”выполнение” имеет несколько другой смысл. Когда каталог помечен как ”исполнимый”, это означает, что можно ”зайти” в него (с помощью команды cd, change directory). Это также означает, что в данном каталоге можно получить доступ к файлам, имена которых известны (конечно, если собственные права на файл разрешают такой доступ).
Если же требуется получить список файлов в некотором каталоге, права доступа на него должные включать доступ на чтение. Для того, чтобы удалить из каталога какой-либо файл, имя которого известно, на этот каталог должны быть даны права на запись и на исполнение.
Существуют и другие права доступа, но они как правило используются в особых случаях, например, SUID (Set UID) и SGID (Set GID) -бит на выполняемые файлы и sticky-бит на каталоги.
Также можно задавать права в символическом виде(мне так не нравиться)
Опция | Буква | Значение |
Кто | u | Пользователь (User) |
Кто | g | Группа(Group) |
Кто | o | Остальные (Other) |
Кто | a | Все(All) |
Действие | + | Добавить права |
Действие | – | Забрать права |
Действие | = | Явная установка прав |
Права | r | Чтение |
Права | w | Запись |
Права | x | Выполнение |
Права | t | Sticky бит |
Права | s | SUID или SGID |
Sticky Bit используется в основном для директорий, чтобы защитить в них файлы. Из такой директории пользователь может удалить только те файлы, владельцем которых он является.
SUID и SGID
Если установлены права доступа SUID и файл исполняемый, то при запуске на выполнение файл получает не права запустившего его, а права владельца файла.
Например:
В системе пользователям разрешено самостоятельно изменять пароль при помощи утилиты passwd. Владельцем passwd является пользователь root поскольку утилита работатет с файлом /etc/passwd который может модифицировать только пользователь root. Что бы непривилигированый пользователь мог работать с системным файлом (т.е. изменить свой пароль) на утилите passwd должен быть устанвлен бит SUID.
Если установлены права доступа SGID, то это равнозначно установке бита SUID, только наследуются права не владельца файла, а группы владельца.
Если установить SGID на каталог, то файлы в этом каталоге будут иметь такие же установки как и установки каталога.
Работа с правами доступа
chmod Изменяет права доступа к файлам и каталогам. С опцией -R рекурсивно меняет права
chmod 640 file1 chmod -R dir/
umask Для управления правами доступа вновь создаваемых файлов. Запущенная без параметров, она показывает текущую установленную маску, а с параметром – устанавливает указанное значение. Биты, присутствующие в маске, будут отсутствовать (будут замаскированы) в правах доступа созданного файла.
chown меняет владельца файла. Только суперпользователь (UID=0) может использовать эту команду. позволяет поменять и группу
chown -R www:www dir1/
chgrp позволяет изменять группу файлов. При этом пользователь должен принадлежать целевой группе и быть владельцем файла или же быть суперпользователем.