Chmod
| Тип |
программа для изменения прав доступа к файлам и директориям |
|---|---|
| Разработчик | |
| Написана на | |
| Операционная система | |
| Последняя версия |
8.5 (23 апреля 2010) |
| Лицензия | |
| Сайт |
chmod (от англ. change mode) в программа для изменения прав доступа к файлам и директориям. Название происходит от программы ОС Unix chmod, которая, собственно, изменяет права доступа к файлам, директориям и символическим ссылкам.
Содержание |
[править] Использование
Права записываются сразу для трёх типов пользователей: владельца-пользователя файла, пользователей, входящих в группу-владелец и для прочих пользователей. Аргумент команды chmod, задающий разрешения, может быть записан в двух форматах: в числовом и в символьном.
Для понимания сути задания прав в Unix-like системах, нужно знать представление чисел в восьмеричной и двоичной системах счисления
| пользователь | группа | остальные |
|---|---|---|
| 7 | 5 | 5 |
| 111 | 101 | 101 |
| rwx | r-x | r-x |
| u | g | o |
Пример символьной записи: 'rwxr-xr-x'.
Примером числовой записи может служить '755', которая эквивалентна записанной выше строковой записи: каждое право имеет числовой код и может быть задано вручную:
- 400 в владелец имеет право на чтение;
- 200 в владелец имеет право на запись;
- 100 в владелец имеет право на выполнение;
- 40 в группа имеет право на чтение;
- 20 в группа имеет право на запись;
- 10 в группа имеет право на выполнение;
- 4 в остальные имеют право на чтение;
- 2 в остальные имеют право на запись;
- 1 в остальные имеют право на выполнение.
Суммировав эти коды можно получить символьную запись. Например, chmod 444 {имяфайла}: 400+40+4=444 в все имеют право только на чтение.
Помимо стандартных 'rwx' значений команда CHMOD осуществляет ещё управление битами SGID, SUID и T. Установленные атрибуты SUID или SGID позволяют запускать файл на выполнение с правами владельца файла или группы соответственно.
Для SUID в вес 4000, а для SGID в 2000.
Пример chmod 4555 {имяфайла} в все имеют право на чтение и выполнение, но запускаться файл на исполнение будет с правами владельца. Для директории: установка SGID приведёт к установке принадлежности каждого нового создаваемого файла к той же группе, к которой принадлежит сама директория, а не к основной группе владельца, как это происходит по умолчанию. SUID для директории не имеет смысла[1].
t-бит используется с директориями. Когда t-бит для директории не установлен, файл в данной директории может удалить любой пользователь, имеющий доступ на запись к данному файлу. Устанавливая t-бит на директорию, мы меняем это правило таким образом, что удалить файл может только владелец этого файла. Следуя приведённой выше кодировке, t-бит имеет вес 1000.
[править] Популярные значения
- 400 (-r--------)
- Владелец имеет право чтения; никто другой не имеет права выполнять никакие действия
- 644 (-rw-r--r--)
- Все пользователи имеют право чтения; владелец может редактировать
- 660 (-rw-rw----)
- Владелец и группа могут читать и редактировать; остальные не имеют права выполнять никаких действий
- 664 (-rw-rw-r--)
- Все пользователи имеют право чтения; владелец и группа могут редактировать
- 666 (-rw-rw-rw-)
- Все пользователи могут читать и редактировать
- 700 (-rwx------)
- Владелец может читать, записывать и запускать на выполнение; никто другой не имеет права выполнять никакие действия
- 744 (-rwxrвr--)
- Каждый пользователь может читать, владелец имеет право редактировать и запускать на выполнение
- 755 (-rwxr-xr-x)
- Каждый пользователь имеет право читать и запускать на выполнение; владелец может редактировать
- 777 (-rwxrwxrwx)
- Каждый пользователь может читать, редактировать и запускать на выполнение
- 1555 (-r-xr-xr-t)
- Каждый пользователь имеет право читать и запускать на выполнение; удалить файл может только владелец этого файла
- 2555 (-r-xr-sr-x)
- Каждый пользователь имеет право читать и запускать на выполнение с правами группы(user group) владельца файла
- 4555 (-r-sr-xr-x)
- Каждый пользователь имеет право читать и запускать на выполнение с правами владельца файла
[править] Особенности
Значениями по умолчанию являются:
- для файлов: 644 (-rw-r--r--)
- для директорий: 755 (drwxr-xr-x)
Так происходит потому, что флаг «исполнения» по-разному действует на файлы и директории. Для директории он означает возможность войти в неё.
Например, можно сделать из командной строки:
Следующая команда выполнит рекурсивное применение правил для всех файлов в директории "/home/test", а также для всех файлов во всех поддиректориях:
# find /home/test -type f -exec chmod 644 {} \;
Следующая команда выполнит рекурсивное применение правил для всех директорий в директории "/home/test", а также для всех директорий во всех поддиректориях:
# find /home/test -type d -exec chmod 755 {} \;
Того же результата можно добиться и без использования find (обратите внимание на заглавную X):
# chmod -R go=rX,u=rwX .
То же:
# chmod -R 755 /home/test.
[править] См. также
- umask -маска режима создания пользовательских файлов
- chown
- Программы UNIX-подобных операционных систем
- В художественной литературе: у Александра Лонса есть роман - «Чмод 666»
[править] Примечания
- в‘ Скотт Граннеман «Linux карманный справочник», Издательский дом «Вильямс», 2007
[править] Ссылки
chmod(1)в страница справки man по пользовательским командам GNU/Linux (англ.)- Справка по chmod в FreeBSD
- Сhmod калькулятор - интерактивная помощь по установке прав доступа
- chmod.ru в кратко о chmod
- Основы управления доступом к файлам.
| Стандартные программы UNIX (все программы) | |
|---|---|
| Файловые системы | chroot dd df fdisk fsck mkisofs mkswap mount umount rehash |
| Файлы и каталоги | cat chattr cd chmod chown chgrp cksum cmp cp diff du file fuser ln ls lsof mkdir mv od pwd rm rmdir split touch |
| Процессы | at cron exit kill killall nice nohup pgrep pidof pkill ps renice sleep time top wait watch |
| Пользователи | env finger id last logname mesg passwd su sudo uptime w wall who whoami write |
| Сеть | ftp host ifconfig netcat netstat nmap nslookup ping rlogin SSH traceroute wget |
| Тексты | AWK comm cut ed ex expand unexpand fmt head iconv join less more paste pr sed sort tac tail tr uniq wc xargs |
| Командная строка | alias basename bash bind dirname echo expr false printf test true unset |
| Поиск | find grep strings whereis which |
| Разное | banner bc cal date help lp man history size tee uname yes reboot |
| Это заготовка статьи о свободном программном обеспечении. Вы можете помочь проекту, исправив и дополнив её. |