Chmod | это... Что такое Chmod? (original) (raw)

chmod
Тип программа для изменения прав доступа к файлам и директориям
Разработчик Проект GNU
Написана на C
Операционная система Unix-подобные
Последняя версия 8.5 (23 апреля 2010)
Лицензия GPLv3+
Сайт gnu.org

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', которая эквивалентна записанной выше строковой записи: каждое право имеет числовой код и может быть задано вручную:

Суммировав эти коды можно получить символьную запись. Например, 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)

Каждый пользователь имеет право читать и запускать на выполнение с правами владельца файла

Особенности

Значениями по умолчанию являются:

Так происходит потому, что флаг «исполнения» по-разному действует на файлы и директории. Для директории он означает возможность войти в неё.

Например, можно сделать из командной строки:

Следующая команда выполнит рекурсивное применение правил для всех файлов в директории "/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.

См. также

Примечания

  1. Скотт Граннеман «Linux карманный справочник», Издательский дом «Вильямс», 2007

Ссылки

Стандартные программы UNIX (все программы)
Файловые системы chrootdddffdiskfsckmkisofsmkswapmountumount • rehash
Файлы и каталоги catchattrcdchmodchownchgrpcksumcmpcpdiffdufilefuserlnlslsofmkdirmvodpwdrmrmdirsplittouch
Процессы atcronexitkillkillallnicenohuppgreppidofpkillpsrenicesleeptimetop • wait • watch
Пользователи envfingeridlastlognamemesgpasswdsusudouptimewwallwhowhoamiwrite
Сеть ftp • hostifconfignetcatnetstatnmapnslookuppingrloginSSHtraceroutewget
Тексты AWKcommcutedexexpand • unexpand • fmtheadiconvjoinlessmorepaste • pr • sedsorttactailtruniqwcxargs
Командная строка aliasbasenamebashbinddirnameechoexprfalseprintftesttrueunset
Поиск findgrepstringswhereiswhich
Разное bannerbccaldate • help • lpmanhistorysizeteeunameyesreboot