сhmod - установка, изменение прав доступа для файлов и директорий
chmod [-fhv] [-R [-H | -L | -P]] права доступа файл ...
Утилита
chmod изменяет биты прав доступа для файлов и директорий, перечисленных в командной строке, в опции
права доступа.
Поддерживаются следующие опции:
- -f
- Не отображать диагностическую информацию, в случае невозможности изменения прав доступа файла, не менять код завершения с целью просигнализировать о неудачном завершении операции.
- -H
- Если указана опция -R, следовать по символическим ссылкам в командной строке. ( По-умолчанию символические ссылки, встреченные при обходе дерева каталогов не обходятся )
- -h
- Если файл является символической ссылкой, менять права доступа на саму ссылку, а не на файл, на который она указывает.
- -L
- Если присутствует опция -R следовать по символическим ссылкам.
- -P
- Если опция -R присутствует, не следовать по символическим ссылкам ( поведение по-умолчанию ).
- -R
- Рекурсивно изменить права доступа на все дерево файлов и директорий, находящихся ниже указанного в опции файл.
- -v
- Вывод отладочной информации. Показывает имена файлов на которые были изменены права доступа. Если опция указано больше одного раза, например -vv, chown покажет имя файла а также старые и новые права доступа в цифровом и символическом представлении.
Опции
-H,
-L и
-P будут проигнорированы, если не указана опция
-R. Кроме того, данные опции переопределяют друг друга, использована будет та, которая указана последней.
Изменить права доступа может только владелец файла или директории и суперпользователь.
При успешном выполнении операции
chmod возвращает
0 и
>0 в противном случае.
Права доступа:
Права доступа могут быть представлены абсолютными или символическими значениями. Абсолютное значение является восьмеричным номером, получаемым из суммы следующих значений:
- 4000 ( setuid бит ).
- Исполняемый файл с установленным битом setuid, будет запущен с еффективным userid владельца файла.
При установке setuid бита на директорию, все файлы и поддиректории создаваемые в данной директории будут иметь владельца данной директории, а не владельца процесса, создавшего файл или директорию. При условии что текущая файловая система поддерживает такой функционал. Смотрите chmod(2) и опцию suiddir команды mount(8).
- 2000 ( setgid бит).
- Исполняемый файл будет запущен с groupid владельца файла.
- 1000 ( sticky бит ).
- Смотрите chmod(2) и sticky(8)
- 0400
- Разрешить чтение владельцу.
- 0200
- Разрешает запись владельцу.
- 0100
- Для файлов, разрешает запуск владельцу файла, для директорий, разрешает поиск владельцу директории.
- 0040
- Разрешить чтение членам группы.
- 0020
- Разрешить запись членам группы.
- 0010
- Для файлов, разрешает запуск членам группы, для директорий, разрешает поиск членам группы.
- 0004
- Разрешает чтение остальным.
- 0002
- Разрешает запись для остальных.
- 0001
- Для файлов, разрешает запуск остальным, для директории разрешает поиск.
Например, обсолютное значение прав доступа, разрешающих: чтение, запись и выполнение владельцу, чтение и выполнение для членов группы, чтение и выполнение для остальных и без установленных битов
SUID и
SGID, будутиметь такое значение:
755 (400+200+100+040+010+004+001).
Символическое выражение прав доступа имеет следующую грамматику:
mode ::= clause [, clause ...]
clause ::= [who ...] [action ...] action
action ::= op [perm ...]
who ::= a | u | g | o
op ::= + | - | =
perm ::= r | s | t | w | x | X | u | g | o
Символы для
who, "
u", "
g" и "
o", соответствуют значениям "
пользователь", "
группа" и "
остальные". Символ "
а" является эквивалентом "
ugo".
Символы
perm соответствуют следующим значениям:
r Бит прав на чтение.
s Бит SUID и SGID на выполнение.
t Sticky бит.
w Бит прав на чтение.
x The execute/search bits.
X Бит выполнения/поиска, если файл является директорией или если данные быты установлены в оригинальных правах доступа. Операции с символом X имеют значение только совместно с op равным "+" и будет проигнорирован в любом другом случае.
u Бит прав для пользователя.
g Бит прав для членов группы.
o Бит прав для остальных.
Символы
op ( операции )
+ Если значение
perm не установлено, ничего не делать. Если не установлено значение для
who, будут установлены значения
perm для которых не установлены биты в маске создания файлов ( см. umask(2) ).
- Поведение аналогичное "
+" только наоборот.
= Если опция
who и опция
perm не указаны, будут очищены биты прав доступа для пользователя, группы и остальных. Если в
perm установлены какие-то биты, они будут присвоены согласно
umask. Проще показать)
freebsd88 /# chmod -vv = ./testfile
/testfile: 0100777 [-rwxrwxrwx ] -> 0100000 [---------- ] # Все биты били сброшены
freebsd88 /# chmod -vv =r ./testfile
/testfile: 0100000 [---------- ] -> 0100444 [-r--r--r-- ] # Установить биты прав на чтение для всех.
freebsd88 /# chmod -vv =rwx ./testfile
/testfile: 0100200 [--w------- ] -> 0100755 [-rwxr-xr-x ] # В этом случае права доступа устанавливаются согласно umask.
freebsd88 /# chmod -vv u= ./testfile
/testfile: 0100755 [-rwxr-xr-x ] -> 0100055 [----r-xr-x ] # Сбрасываем все права для пользователя.
freebsd88 /# chmod -vv g=rwx ./testfile
/testfile: 0100000 [---------- ] -> 0100070 [----rwx--- ] # Устанавливаем все права для группы.
Классические примеры:
644 Права доступа на чтение для всех и на запись только для владельца.
go-w Запретить права на запись для группы и остальных.
=rw,+X Установить права на чтение и запись в значения по умолчанию, но сохранить права на исполнение в текущей установке.
+X Установить права доступа поиск/выполнение для файла или дректории для всех.
755 Сделать файл читаемым/исполняемым для всех и дать права на запись только для владельца.
u=rwx,go=rx
u=rwx,go=u-w
go= Сбросить все биты прав доступа для группы и остальных.
g=u-w Установить биты прав для группы какие установлены для владельца, но снять бит на запись.
СМОТРИТЕ ТАКЖЕ
chflags(1), install(1), setfacl(1), chmod(2), stat(2), umask(2), fts(3), setmode(3), symlink(7), chown(8), mount(8), sticky(8)
администрирование серверов