Немного теории:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Права доступа к файлу: В каждом файле или каталоге сохраняется следующая информация: владелец файла; группа, к которой относится файл; девять битов доступа (rwxrwxrwx для read/write/execute — для владельца файла, членов группы владельца и всех остальных); еще несколько дополнительных битов для выполнения специальных функций. Как правило, владельцем файла является его создатель. В качестве группы обычно используется основная группа владельца. Информация о доступе (г, w и х) описывает, кто имеет право читать файл, записывать в него информацию (то есть вносить изменения) и выполнять его. Таким образом, владелец файла получает больше прав, чем другие пользователи. Обычно эта информация называется битами доступа, так как внутри системы она сохраняется как число с разрядной кодировкой. Биты доступа, владелец файла, а также соответствие этого файла к той или иной группе можно просмотреть с помощью команды ls -l. Права на файлы/папки d 421 421 421 chmod d rwx rwx rwx тип U G O d - тип файла (d)каталог, (-)файл, (c)идентификатор, (l)символьные ссылки, (b)блочные устройства, (p)именованные каналы, (s) сокеты r - чтение 4 w - запись 2 x - выполнение 1 |
Права доступа к каталогам:
1 2 3 4 |
В принципе девять битов доступа применимы и при работе с каталогами, но в таком случае их значение несколько отличается: r-бит позволяет другим пользователям просмотреть содержимое каталога с помощью команды ls. x-бит дает возможность перейти в этот каталог с помощью cd. Если поставить и х, и w, то в каталоге можно создавать новые файлы. |
Бит Setuid:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Бит Setuid иногда сокращенно называется suid. С его помощью программа всегда выполняется так, как если бы пользователь запускал ее сам. Итак, если владельцем программы является администратор (это случается довольно часто), то любой пользователь может работать с этой программой так же, как если бы он был администратором. Внутри системы для выполнения программы применяется пользовательский идентификационный номер владельца файла, а не UID пользователя, работающего с файлом в данный момент. Бит Setuid применяется для того, чтобы присваивать обычным пользователям дополнительные права, действующие лишь при выполнении данной конкретной программы. Правда, это чревато угрозой для безопасности — особенно тогда, когда при выполнении данной программы запускаются другие программы. Это означает, что по возможности следует избегать применения бита Setuid. Одно из немногих исключений — команда mount. Вместо бита Setui d можно использовать команду sudo. В таких программах команда ls -l показывает для пользовательского бита доступа букву s (a не x). Восьмеричное значение этого бита (для chmod) составляет 4000. |
Бит Setgit:
1 2 3 4 5 6 7 |
Этот бит работает с программами почти так же, как и Setuid. Правда, в данном случае при выполнении программы используется идентификационный номер группы, к которой относится файл (а не групповой идентификационный номер пользователя, работающего с программой). В таких программах команда ls -l выдает для групповых битов доступа букву s (a не x). Восьмеричное значение этого бита составляет 2000. При работе с каталогами бит Setgid действует так, что новые файлы, создаваемые в том или ином каталоге, сразу же относятся к той же группе, что и этот каталог (а не к группе пользователя, создавшего файл, как это бывает обычно). |
Бит Sticky:
1 2 3 4 5 |
В каталогах, в которых файлы может изменять любой пользователь, бит Sticky гарантирует, что каждый пользователь может удалять только свои файлы, но не файлы коллег. Этот бит ставится, например, для каталога /tmp. Здесь любой пользователь может сохранять временные файлы. Однако необходимо избегать таких случаев, в которых любой пользователь мог бы по собственному усмотрению переименовывать или удалять файлы других пользователей. Команда ls -l в таких программах выдает для всех действительных битов доступа букву t (а не х). Восьмеричное значение этого бита составляет 1000. |
Специальные биты в ls:
1 2 3 4 |
При выполнении команды ls -l в определенной ситуации могут отображаться специальные биты S и T. При этом мы не имеем дело с новыми специальными битами, а получаем указание на то, что биты Setuid, Setgid или Sticky были использованы неправильно. S — бит Setuid или Setgid поставлен, но не поставлен бит доступа x (при этом Setuid или Setgid не будут работать). T — бит Sti cky поставлен, но не поставлен бит доступа x для группы others. |
chown
1 2 3 |
chown vasya /file - назначить пользователя vasya владельцем файла file chown -R vasya directory - рекурсивно обойти директорию directory и назначить пользователя vasya владельцем всех вложенных файлов и директорий chown vasya:group /file - назначить владельца и группу для файла /file |
chgrp
1 |
chgrp new_group file - изменить группу-владельца для file на new_group |
chmod
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
chmod ugo+rwx /directory - установить полные права доступа rwx ( Read Write eXecute ) для всех ugo ( User Group Other ) на директорию /directory. то-же самое можно сделать, используя числовой представление chmod 777 directory chmod go-rwx /directory - удалить все права на директорию /directory для группы и остальных chmod o+t /home/public - установить так называемый STIKY-бит на директорию /home/public. удалить файл в такой директории может только владелец данного файла chmod o-t /home/public - удалить STIKY-бит с директории /home/public chmod u+s /bin/binary_file - установить SUID-бит на файл /bin/binary_file. это позволяет любому пользователю системы, запускать данный файл с правами владельца файла chmod u-s /bin/binary_file - удалить SUID-бит с файла /bin/binary_file chmod g+s /home/public - установить SGID-бит на директории /home/public chmod g-s /home/public - удалить SGID-бит с директории /home/public |
Показать права
1 2 |
find / -perm -u+s - поиск всех файлов с установленным SUID битом, начиная с корня файловой системы ls -lh - листинг текущего каталога с правами доступа |