Установка прав доступа
Команда chmod предназначена для изменения прав доступа к файлам и ката- логам, указанным в качестве аргументов. Права доступа должны быть указа- ны либо в восьмеричной, либо в символьной нотации. Изменять права досту- па к файлу могут только суперпользователь и владелец файла.
В примере 6.9 показано использование команды chmod для изменения прав доступа к файлу в восьмеричной нотации.
Пример 6.9. Изменение прав доступа в восьмеричной нотации |
$ ls -l text.c | ||
-rw-r--r-- 1 prof | tania | 175 Dec 13 21:24 text.c |
$ chmod 660 text.c | ||
$ ls -l text.c | ||
-rw-rw---- 1 prof | tania | 175 Dec 13 21:24 text.c |
Команда chmod 660 text.c установила права 660 на файл text.c.
Команда chmod позволяет также устанавливать права на доступ к файлу, ука- зывая их в символьной нотации. Для этого применяется следующая форма команды:
chmod класс изменение права файлы
Здесь класс — один из следующих:
r u — доступ владельца;
r g — доступ группы владельцев;
r o — доступ всех остальных;
r a — доступ всех групп пользователей. Аргумент изменение:
D + — разрешить (добавить);
r - — запретить (убрать);
D = — установить (переписать).
Аргумент права:
r r — чтение;
r w — запись;
r x — выполнение.
Предположим, что для файла text.c требуется удалить право на запись для группы и добавить право на чтение для остальных. Пример 6.10 демонстри- рует это.
Пример 6.10. Изменение прав доступа в символьной нотации |
$ chmod g-w,o+r text.c
$ ls -l text.c
-rw-r--r-- 1 prof tania 175 Dec 13 21:24 text.c
Если используются операции разрешения + или запрета - прав на файл, то они не изменяют те биты прав доступа, которые не относятся к требуемому изменению.
Наоборот, использование операции назначения = стирает те права, которые были установлены ранее, и назначает новые. Так, например, установим на файл text.c права на чтение и запись для владельца и группы и запретим всем остальным какой-либо доступ к файлу (пример 6.11).
Пример 6.11. Установка прав доступа со сбросом предыдущих прав |
$ chmod ug=rw,o= text.c
$ ls -l text.c
-rw-rw---- 1 prof tania 175 Dec 13 21:24 text.c
Аналогично командам chown и chgrp, команда chmod способна рекурсивно изменять права доступа к каталогам и всему их содержимому, если она вы- звана с опцией -R. Однако этой возможностью следует пользоваться с особой осторожностью, принимая во внимание концептуальные отличия прав на файлы от прав на каталоги — на файлы в большинстве случаев устанавлива- ются четные права (отсутствие прав на исполнение), а на каталоги наобо- рот — нечетные (без права на search каталоги не позволят обращаться к ме- таданным файлов внутри них).
Приведенная в примере 6.12 команда снимает права на запись для каталога
scores.
Пример 6.12. Рекурсивная установка прав доступа |
$ ls -lR scores scores:
total 1
drwxrwxr-x 2 prof users 80 Aug 24 16:20 rnd_tutorial scores/rnd_tutorial:
total 4
-rw-rw-r-- 1 prof users 1040 Aug 24 16:20 000.score
$ chmod -R g-w scores
$ ls -lR scores scores:
total 1
drwxr-xr-x 2 prof users 80 Aug 24 16:20 rnd_tutorial scores/rnd_tutorial:
total 4
-rw-r--r-- 1 prof users 1040 Aug 24 16:20 000.score
Видно, что и с самого каталога, и со всего его содержимого были удалены права на запись для группы пользователей.
Рекурсивное изменение прав на каталог и его содержимое используют для дополнения или запрета доступа на чтение или запись. Часто права на ката- логи и на файлы устанавливаются отдельно командой find с модификатором
-exec chmod.
Например, в каталоге scores требуется установить для файлов права 644, не затрагивая при этом права на каталоги (пример 6.13).
Пример 6.13. Установка прав на выбранные командой find файлы |
$ find scores -type f -exec chmod 644 {} \;
$ ls -lR scores scores:
итого 1
drwxr-xr-x 2 prof users 80 Авг 24 16:20 rnd_tutorial scores/rnd_tutorial:
итого 4
-rw-r--r-- 1 prof users 1040 Авг 24 16:20 000.score
GNU-версия команды chmod позволяет использовать опцию -v для получения подробной информации о файлах (пример 6.14), для которых изменяются права, и опцию -c для получения подробностей изменения прав.
Пример 6.14. Использование опции -v команды chmod |
$ chmod -Rv g-w scores
права доступа `scores' изменены на 0755 (rwxr-xr-x)
права доступа `scores/rnd_tutorial' изменены на 0755 (rwxr-xr-x)
права доступа `scores/rnd_tutorial/000.score' изменены на 0644(rw-r--r--)
Однако опция -v выдает подробную информацию всегда, а -c только тогда, когда права действительно изменяются (пример 6.15).
Пример 6.15. Использование опции -c команды chmod |
$ chmod -c g-w text.c
права доступа `text.c' изменены на 0640 (rw-r-----)
$ chmod -v 660 text.c
права доступа `text.c' изменены на 0660 (rw-rw----)
Дата добавления: 2015-06-12; просмотров: 782;