Chmod: изменение прав доступа. Команды Linux: CHMOD Chmod параметры

Команда chmod , команда chown и команда chgrp.

Команда chmod предназначена для изменения прав доступа файлов и директорий в Linux. Название команды произошло от словосочетания «ch ange mod e».

Синтаксис команды chmod следующий:

Chmod разрешения имя_файла

Разрешения можно задавать двумя способами:

  • Числом
  • Символами

Изменение прав доступа командой chmod

Запись прав доступа числом

Chmod 764 myfile

В данном формате права доступа задаются не символами rwx , как описано выше, а трехзначным числом. Каждая цифра числа означает определенный набор прав доступа.

  • Первая цифра используется для указания прав доступа для пользователя.
  • Вторая цифра для группы.
  • Третья для всех остальных.

В таблице ниже приводятся все возможные комбинации разрешений rwx и соответсвующие им числа (которые используются в команде chmod):

Число Разрешения Символьное обозначение
0 разрешения отсутствуют ---
1 x — запуск --x
2 w — изменение -w-
3 x+w — запуск+изменение -wx
4 r — чтение r--
5 r+x — чтение+запуск r-x
6 r+w — чтение+изменение rw-
7 r+w+x — чтение+изменение+запуск rwx

Рассмотрим использование команды chmod с записью прав доступа числом на примере. Установим для файла права доступа 764:

Chmod 764 myfile

Это означает (см. таблицу выше), что для файла myfile мы устанавливаем права доступа 7 6 4 , которые означают:

  • 7 — права для владельца-пользователя. Владелец файла может читать, изменять и запускать файл (r+w+x).
  • 6 — права для группы. Пользователи, которые принадлежат группе могут читать и изменять файл (r+w).
  • 4 — права для всех остальных. Все остальные могут только читать файл (r).

Если записать 764 с помощью символов (см. таблицу), то мы получим: «rwxrw-r- ».

В таблице ниже приведены некоторые часто используемые значения числовых значений прав доступа:

Числовое
обозначение
"rwx"-обозначение Описание
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 Все пользователи могут читать, изменять и редактировать файл.

Запись прав доступа символами

Chmod +x myfile1 chmod g=rw myfile2 chmod u-w myfile3

Как вы можете видеть, в данном формате права доступа задаются символами rwx , но в синтаксисе используются и другие вспомогательные символы, например, математические операции «+ » и «- » и такие символы как, например, «g » или «u ».

Общий синтаксис можно записать примерно так:

Chmod (владелец)(математическая операция)(разрешения) имя_файла

Обозначения для владельцев файла следующие:

Математические операции означают следующее:

В одной команде можно перечислять владельцев и их разрешения через запятую (см. пример ниже).

Рассмотрим примеры:

  • chmod +x myfile1

    В данном случае мы не используем обозначения для владельцев, а значит разрешения устанавливаются для всех пользователей. «+x » означает — установить разрешение на запуск (x ) файла для всех пользователей. Это эквивалентно выполнению команды: chmod a+x myfile1 .

  • chmod g=rw myfile2

    Здесь используется обозначение g и символ равенства «= ». Это означает, что для группы мы устанавливаем права доступа на чтение и запись файла (rw ).

  • chmod u-w myfile3

    Для владельца файла (u ) мы удаляем разрешение на изменение (w ) файла.

  • chmod ug+x myfile2

    Разрешаем владельцу (u ) и группе (g ) запускать файл (x ).

  • chmod u+x,g-w,o-r myfile3

    Это как раз тот случай, когда мы перечисляем владельцев через запятую и устанавливаем для них разрешения. Для владельца файла (u ) мы разрешаем запуск файла, для группы (g ) мы запрещаем изменять файл, для всех остальных (o ) мы запрещаем читать файл.

Рекурсивное изменение прав доступа

Если необходимо изменить права доступа на все файлы в директории, включая вложенные директории, то для этого существует опция -R , что означает рекурсивное изменение прав доступа для директорий и их содержимого. Например, изменим права доступа у всех файлов в директории Mydir:

Chmod -R 644 Mydir

И еще один момент. Если пользователь не является владельцем файла, но ему нужно изменить права доступа у данного файла, то команду chmod необходимо выполнять с использованием sudo , например:

Sudo chmod 644 file

Видео-обзор команды chmod

Команда chown — изменение владельца и группы

Для изменения владельца и группы файла используется команда chown .

Для изменения владельца файла используется следующий синтаксис:

Chown новый_владелец имя_файла

myfile нового владельца vasya :

Chown vasya myfile

Для изменения владельца и группы файла используется следующий синтаксис:

Chown новый_владелец:новая_группа имя_файла

Например, установим для файла myfile нового владельца vasya и группу sambashare :

Chown vasya:sambashare myfile

Команда chgrp — изменение группы

Есть еще одна команда — chgrp . Она позволяет изменить только группу. Например:

Chgrp sambashare myfile

Резюме

В Linux у каждого файла есть права доступа — это разрешения, владелец и группа.

Разрешения задаются для владельца, группы и для всех остальных.

Есть три вида разрешений — r — чтение, w — изменение, x — запуск.

Чтобы изменить разрешения у файла используется команда chmod .

Чтобы изменить владельца или группу используется команда chown .

Чтобы изменить группу используется chgrp .

Доброго здоровья, уважаемые читатели блога! Всем бы нам хотелось, чтобы каждый или папка, расположенные на сервере хостинга и принадлежащие сайту, были бы максимально защищены от несанкционированного доступа.

Такая защита обеспечивается за счет того, что 90% хостеров используют Unix-подобные операционные системы, в которых существует возможность регулировать права доступа ко всем файлам и каталогам. Сервер моего хостинг-провайдера , на котором расположено несколько моих проектов, не исключение.

Кстати, обязательно поинтересуйтесь, перейдя по предоставленной ссылке. Но продолжим. Правила, установленные в Unix, отличаются от привычного для многих регламента работы в операционной системе Windows, где защита в этом аспекте не так сильна, что иногда приводит к плачевным последствиям в виде заражения системы вирусами.

CHMOD для пользователей и права доступа к файлам и папкам (директориям)

В системах, управляемых Unix, ситуация иная и есть возможность серьезно осложнить жизнь нехорошим дядям, которые попытаются воспользоваться результатами вашего кропотливого труда на протяжении длительного периода. А именно, правильно настроить права доступа CHMOD. Наша задача дать минимально возможные для доступа к файлам и папкам права, которые тем не менее не нарушат корректную работу сайта.

Согласитесь, грех не воспользоваться возможностью серьезно усилить . Конечно, в этом случае редактирование некоторых файлов будет занимать немного больше времени, но тут уж приходится выбирать: либо оптимизация безопасности системы, либо... Ниже я постараюсь систематизировать информацию по CHMOD (правам доступа), потому что здесь есть несколько нюансов, которые необходимо знать вебмастеру. Итак, начнем.

Права доступа различаются для различных групп пользователей. При попытке соединения сервер определяет, к какой группе отнести того или иного пользователя. Все пользователи разделяются на три категории:

  1. «user» - владелец файла
  2. «group» - один из членов группы, к которой принадлежит и владелец
  3. «world» - “остальной мир”, то есть все остальные пользователи

Если вы подключаетесь к серверу по и заходите под своим логином и паролем, то будете идентифицированы как “user” (u), если кто-либо другой подключается по FTP, то будет определен как “group” (g), если же пользователь использует браузер, то попадает под категорию “world” (o).

Теперь о правах доступа CMOD к файлам и директориям. По сути они немного отличаются, хотя обозначения применяются одни и те же. Права доступа к файлам:

  • r (read) - право на чтение данных файла
  • w (wright) - право на изменение содержимого (можно произвести только редактирование содержимого - запись, но удалять нельзя)
  • x (eXutive) - право на исполнение файла

Права доступа к папкам (директориям):

  • r - право на чтение папки (можно получить содержимое директории, то есть список файлов, входящих в нее)
  • w - право на изменение содержимого (разрешение на создание и удаление объектов в директории, если вы имеете право на запись файлов, то удалять можно даже те объекты, которые вам не принадлежат)
  • x - право доступа в ту или иную директорию (особенность здесь такая, что если даже вы имеете все необходимые права на файл, который расположен “в глубине” директорий, но не имеете права доступа хотя бы к одной поддиректории на пути к этому объекту, то не сможете получить доступ к нему)

Значком дефиса «-» отмечают отсутствие каких-либо прав. Все эти права прописываются администратором, который получает эту возможность посредством ввода пароля. Если мы сможем установить максимально возможные ограничения на права доступа CHMOD к тем или иным файлам ресурса, то сможем практически исключить опасность реализации своего “черного дела” вирусным программам.

Для наглядности рассмотрим пример, когда владелец файла u имеет все возможные права: на чтение, запись и исполнение. Пользователи, отнесенные к категории g (group) - только на чтение и запись, все остальные (w) имеют только право на чтение. Тогда запись CHMOD будет выглядеть следующим образом: «rwx rw- r- -».

Права доступа к файлам и папкам в цифровом выражении: CHMOD (777, 755, 444)

Но чаще вебмастерам в своей практической деятельности приходится назначать те или иные права доступа в цифровом выражении:

  • r (чтение) - 4
  • w (запись) - 2
  • x (исполнение) - 1
  • - (нет прав) - 0

Теперь вновь разберем вышеприведенный пример для назначения прав доступа «rwx rw- r- -». Для отображения прав каждого пользователя применяется сложение его прав (r чтение + w запись + x исполнение). Таким образом часть записи для владельца файла u (user) - «rwx » превратится в 7 (4+2+1). Для члена группы g (group) - «rw-» в 6 (4+2+0) и для остальных пользователей o (world) - «r- -» в 4 (4+0+0). В качестве резюме представлю сводную таблицу со значениями прав доступа CHMOD, выраженными как в буквах, так и в цифрах:


Теперь представлю еще одну таблицу, которая отражает суммарные права CHMOD для всех групп пользователей в формате цифр:


Это основные комбинации, которые наиболее часто используются в работе вебмастера. Остальные формируются по аналогии. Если вы являетесь администратором сайта или блога, но работаете с проектом, не подсоединившись по FTP протоколу, вы также относитесь к группе “Остальные пользователи”. В таком случае при работе с сайтом в таком режиме нужно учитывать последнюю цифру в значении CHMOD.

Обычно на сервере, где находятся файлы вашего WordPress блога, на папки выставляются права доступа 755, а на файлы, которые входят в их состав, 644. Это справедливо, когда ресурс построен с использованием файлов HTML, однако в современных условиях для построения сайта массово используются CMS (системы управления контентом), к которым относится и WordPress. А здесь могут находиться объекты, в которые нужно производить записи от группы пользователей “world”. Могут находиться папки , в которые загружается контент, в том числе изображения.

Поэтому назначения прав CHMOD на те или иные файлы необходимо дифференцировать. Если вы входите в управление сайтом по FTP, то можете производить любые действия, однако во многих случаях мы работаем со своим проектом через , а в этом случае могут возникнуть проблемы, если права слишком завышены, и, наоборот, если права доступа к тому или иному файлу (папке) занижены, то возрастает угроза безопасности. Посему на основании вышесказанного можно определить некоторые рекомендации по практическому применению CHMOD для блога WordPress:

777 - для папок, в которых постоянно происходит запись и стирание файлов (для папки кэширования)
755 - применительно к папкам, в которые постоянно записываются файлы, но не удаляются
666 - для файлов, в которые необходимо время от времени добавлять запись (например, файл.htaccess)
644 - для файлов, которые используются только для чтения (.php, .html и др.)

Как настроить права доступа CHMOD с помощью FTP менеджера FileZilla

Если при работе с ресурсом будет необходимо внести какие-то изменения, но по причине наличия запрета на редактирование это сделать невозможно, нужно подсоединиться к серверу хостинга по протоколу FTP и изменить права доступа на 777. Однако после внесения в файл изменений рекомендуется вновь выставить прежний CHMOD.

Теперь подробнее о том, как проделать эту операцию с помощью . Для этого открываем программу и соединяемся посредством FTP к серверу хостера. В левой части «Удаленный сервер» сначала отмечаем файлы, атрибуты которых будут подвергнуты редактированию:

И из контекстного меню, вызванного нажатием правой кнопки мыши, выбираем «Права доступа к файлу» . После этого появится диалоговое окно «Изменить атрибуты файла» :

Здесь присваиваем нужные значения CHMOD для выбранного (или выбранных) файлов. Но это только, если вы выбирали файл или группу файлов. В случае, если вы хотите установить или изменить значения CHMOD для каталога (папки) при выборе «Изменить атрибуты файла» появится аналоговое окно, несколько отличное от расположенного выше, а именно:

Видите, здесь появились дополнительные настройки. Если вы поставите галочку напротив строки «Перенаправить во вложенные каталоги» , это значит, что заданные права доступа будут применены ко вложенным в эту директорию каталогам (папкам) либо файлам. При отмеченной галочке ниже расположенная группа настроек станет активной и вам потребуется еще выбрать, как нужно применять настройки: ко всем файлам и каталогам, только ко вложенным файлам либо только к каталогам.

(Изначальное значение прав доступа файла file - rwxrwxrwx – полный доступ для всех) Отмена разрешения на выполнение файла для всех пользователей и групп:

$ chmod a-x file (rw-rw-rw-)

Отмена записи в файл группой и остальными пользователями:

$ chmod go-w file (rw-r–r–)

Разрешение выполнения файла владельцем:

$ chmod u+x file (rwxr–r–)

Предоставление группе тех прав доступа, которыми владеет владелец файла:

$ chmod g=u file (rwxrwxr–)

Отмена чтения и запись в файл пользователям группы и другим пользователям:

$ chmod go-rw file (rwx–x-)

Примеры использования команды chmod в абсолютном режиме

Разрешение чтения, записи, выполнения файла file всеми пользователями и группами (полный доступ):

$ chmod 777 file (rwxrwxrwx)

Установка разрешений на чтение и запись для владельца, группы и остальных пользователей:

$ chmod 666 file (rw-rw-rw-)

Установка полного доступа к файлу для владельца и лишь чтения для группы и остальных пользователей:

$ chmod 744 file (rwxr–r–)

Установка полного доступа к файлу владельцу файла и запрет доступа группе и другим пользователям:

$ chmod 700 file (rwx--)

Установка разрешений на чтение и запись для владельца файла и лишь чтения для группы и остальных:

$ chmod 644 file (rw-r–r–)

Установка разрешений на чтение и запись владельцу файлу и его группе и запрет доступа для других:

$ chmod 640 file (rw-r-–)

Установка доступа к файлу с разрешением чтения для всех пользователей и групп:

$ chmod 444 file (r–r–r–)

Права доступа к файлу для чтения, записи, выполнения владельцем и чтения, выполнения группе и другим:

$ chmod 755 file (rwxr-xr-x)

Разрешение доступа к файлу на чтение и выполнение пользователю и остальным и запрет доступа для группы:

$ chmod 505 file (r-x-r-x)

Если вы хотите назначить права доступа на все файлы в текущем каталоге, просто поставьте после назначаемых прав доступа знак * (звездочка):

$ chmod 755 *

В результате выполнения этой команды владелец получит полные права (чтение, изменение, выполнение) на все файлы текущего каталога, а группа и другие пользователи – только чтение и выполнение. Если вы хотите, чтобы ваши действия распространились рекурсивно (включая все подкаталоги), воспользуйтесь опцией -R:

$ chmod -R 777 *

Результатом выполнения вышеприведенной команды будет рекурсивный “обход” всех подкаталогов текущего каталога и назначение полного доступа для всех пользователей и групп. В этой статье рассмотрены лишь некоторые примеры применения команды chmod. Если вы хотите узнать подробнее о работе команды chmod и правах доступа в Linux, обратите внимание на эту статью.

Смена прав только у директорий (рекурсивно)

$ find /path/to/base/dir -type d -exec chmod 755 {} +

$ chmod 755 $(find /path/to/base/dir -type d)

$ chmod 755 `find /path/to/base/dir -type d`

$ find /path/to/base/dir -type d -print0 | xargs -0 chmod 755

Смена прав только у файлов (рекурсивно)

$ find /path/to/base/dir -type f -exec chmod 644 {} +

$ chmod 644 $(find /path/to/base/dir -type f)

$ chmod 0755 `find ./ -type f`

$ find /path/to/base/dir -type f -print0 | xargs -0 chmod 644

Синтаксис Chmod для папок и файлов

Давайте сначала разберемся в сути вопроса с Chmod, чтобы понимать, что именно и каким образом мы настраиваем. Итак приступим. Права доступа разделяются на Chmod к файлам и Chmod к директориям. Обозначаются они одинаково, но означают немного разное.

Права доступа (Chmod) к файлам подразделяются на:

    r - право на чтение данных.

    w - право на изменение содержимого (запись – только изменение содержимого, но не удаление).

    x - право на исполнение файла.

Остановимся чуть подробнее на праве исполнения файла. Дело в том, что в linux (Unix), любой файл может быть исполнен. Является ли он исполнительным - определяется не по его расширению (понятие расширение отсутствует в файловой системе Unix), а по правам доступа Chmod. Если у какого-либо файла установлено право “X” (chmod x), то это означает, что его можно запустить на выполнение.

Теперь о правах доступа (Chmod) к папке (директории):

    r - право на чтение директории (можно прочитать содержимое директории, т.е. получить список объектов, находящихся в ней)

    w - право на изменение содержимого директории (можно создавать и удалять объекты в этой директории, причем если вы имеете право на запись, то удалять вы сможете даже те файлы, которые вам не принадлежат)

    x - право, которое позволяет вам войти в директорию (это право всегда проверяется в первую очередь, и даже если вы имеете все нужные права на объект, который закопан глубоко в цепочке директорий, но не имеете права “X” для доступа хотя бы к одной директории на пути к этому файлу, то к нему вы так и не пробьетесь)

В системах linux (Unix) все эти права раздает главный администратор компьютера, доступ к которому он получает путем ввода пароля. И если большинство объектов будут иметь права доступа (Chmod) только для чтения, то вирусам на таком компьютере делать будет практически нечего, т.к. они не смогут себя туда ни записать, ни затем исполниться. Именно этого результата нам нужно добиться, выставляя права доступа (Chmod) на объекты нашего сайта.

Синтаксис Chmod для групп пользователей

Сами права доступа (Chmod) подразделяются на три категории, в зависимости от того, кто обращается к объекту:

    «user» - u (непосредственно владелец файла)

    «group» - g (член той же группы, к которой принадлежит владелец)

    «world» - o (все остальные)

Сервер определяет, к какой группе пользователей вас отнести в момент подключения вас к серверу. Когда вы, например, подключаетесь к серверу по протоколу FTP , то вы входите под своим именем пользователя (и паролем), и тогда сервер относит вас к группе «user» («u)». Прочие пользователи, которые тоже подключаются по FTP к серверу, будут отнесены к группе «group» («g»), а пользователь, который приходит к вам на сайт, используя свой браузер, попадает в группу «world» («o»).

Вариации трех возможных значений «r», «w» и «x» для трех категорий «u», «g» и «o» и определяют Chmod к файлам. Если не задана какая-то категория, то она заменяется знаком дефисом «-». права доступа (Chmod) указываются последовательно в заданном порядке:

    сначала права для владельца - «u»

    затем для группы - «g»

    и в конце права для всех остальных - «o»

После того, как сервер отнесет пользователя к определенной группе, он предоставляет ему права на действия с объектами, после чего пользователь сможет прочитать, записать или выполнить файл (в зависимости от того, что разрешено делать с данным объектом его группе). Чтобы посмотреть содержимое папки, она должна иметь атрибут чтения «r» (для той группы, к которой сервер отнес пользователя). Чтобы создать файл или папку в уже существующей, необходимо, чтобы она имела атрибут Chmod на запись «w».

Для наглядности давайте разберем пример, где владелец файла («user» - «u») имеет все права: право на чтение, запись в него и исполнение, а все остальные пользователи только право на чтение. Запись таких Chmod будет выглядеть так: «rwx r-- r--». Рассмотрим ее в деталях: «rwx» (эта запись задает права на объект для владельца - «u»), «r--» (эта запись задает права на тот же объект, но в случае если пользователь отнесен сервером к группы - «g»), «r--» (эта запись задает права на объект для всех остальных пользователей - o").

Чем отличаются Chmod файлов и папок

Ничего нельзя делать

Доступ к каталогу и его подкаталогам запрещен

Можно видеть и изменять содержимое

Можно добавить, удалить, изменить файл папки

Выполнить, если файл двоичный

Пользователь может выполнить двоичный файл о существовании которого ему известно, зайти или прочитать каталог запрещено

Синтаксис Chmod выраженных в цифрах (777)

Вы видите, что здесь для описания прав доступа используются записи с использованием латинских букв и дефисов, но вы, наверное, уже сталкивались с тем, что обычно Chmod задают в цифровом виде, например, всем известная комбинации: Chmod 777, разрешающая все и всем. Действительно, права доступа (Chmod) так же обозначают и цифрами:

    w (запись) заменяют на 2

    x (исполнение) заменяют на 1

0 означает – ничего не делать (то, что в буквенной записи обозначается дефисом) Давайте опять вернемся к примеру записи прав доступа, приведенному мною чуть ранее: rwx r-- r--. Если заменить в ней буквы и дефисы на цифры, в соответствии с только что описанным правилом и при этом сложить цифры в каждой тройке, то получим цифровой вид этой записи: 744. Т.е. получается, что сумма этих цифр и показывает Chmod к файлам или папке. Например:

    7 (rwx) = 4 + 2 +1 (полные права)

    5 (r-x)= 4 + 0 + 1 (чтение и выполнение)

    6 (rw-) = 4 + 2 + 0 (чтение и запись)

    4 (r--) =4 + 0 + 0 (только чтение)

В этой таблицы приведены все возможные комбинации Chmod записанные в цифровом виде:

А теперь давайте рассмотрим различные комбинации Chmod в цифрах, применительно к группам пользователей:

«„Владелец“»

«„Группа“»

«„Остальные“»

исполнять

исполнять

исполнять

Вы сами (кроме того случая, когда вы получаете доступ к сайту по FTP) и все остальные посетители вашего сайта, относитесь к группе “word” (все остальные), поэтому для работы с вебсайтом нам нужно в первую очередь смотреть на последнюю (третью) цифру Chmod. Для того чтобы при работе пользователя с сайтом «запускался файл» скрипта достаточно будет, чтобы на него были установлены права доступа (Chmod), начиная от «4» (r-- – только чтение) (5,6,7 тоже подойдут, но это будет лишнее в плане безопасности).

«Для папки» же, в которой лежит файл этого скрипта, нужно выставить минимум «5» (r-x - можно зайти в папку и прочитать его содержимое, удалять или добавлять нельзя). 7 тоже подойдет, но тоже будет уже лишним в плане безопасности. Если нужно, чтобы скрипт не только читался, но и «записывал» какие-то данные (например, введенные пользователем), то минимальные права на «папку» по-прежнему будут «5», но для «файла» уже понадобятся права «6» (читать и записывать).

Скорей всего на сервере, куда вы скопировали содержимое движка вашего сайта, будут установлены следующие Chmod к объектам:

Папки 755

владелец (user) может всё, группа и все остальные могут только читать папки и заходить в них, но им запрещено записывать файлы, изменять названия и стирать их в директориях. (rwxr-xr-x)

Файлы 644

Если бы у вас был сайт, состоящий из одних html, то можно было бы все так и оставить. Но современные сайты построены на движках, и там могут быть объекты, в которые нужно будет производить запись от имени пользователей из группы «world» - o (все остальные). Это могут быть папки, используемые для кэширования страниц или те, в которые по ходу работы с сайтом будут загружаться картинки и др. Само собой, что если вы зайдете на сайт по FTP , то сможете призвести запись в эти файлы или папки, но работая с интерфейсом вебсайта, как обычный пользователь, у вас могут возникнуть проблемы. Поэтому к установке тех или иных Chmod надо подходить избирательно.

НАЗВАНИЕ
chmod - изменение режима доступа к файлам

СИНТАКСИС

Chmod режим файл...

ОПИСАНИЕ
Права доступа к указанным файлам (среди которых могут быть каталоги) изменяются в соответствии с указанным режимом. Режим может быть задан в абсолютном или символьном виде.

Абсолютный вид - восьмеричное число, являющееся поразрядным ИЛИ следующих режимов: 04000 При выполнении переустановить действующий идентификатор пользователя. 020#0 При выполнении переустановить действующий идентификатор группы, если # есть 7, 5, 3 или 1; учитывать блокировку доступа, если # есть 6, 4, 2 или 0. 01000 Бит навязчивости [см. man chmod(2)]. 00400 Доступен для чтения владельцем. 00200 Доступен для записи владельцем. 00100 Доступен для выполнения (в случае каталога - для просмотра) владельцем. 00040 Доступен для чтения членами группы. 00020 Доступен для записи членами группы. 00010 Доступен для выполнения (просмотра) членами группы. 00004 Доступен для чтения прочими пользователями. 00002 Доступен для записи прочими пользователями. 00001 Доступен для выполнения (просмотра) прочими пользователями.

Использование символьного вида основано на однобуквенных обозначениях, которые определяют класс доступа и права доступа для членов данного класса. Права доступа к файлу зависят от идентификатора пользователя и идентификатора группы, в которую он входит. Режим в целом описывается в терминах трех последовательностей, по три буквы в каждой:

Владелец Группа Прочие (u) (g) (o) rwx rwx rwx

Здесь владелец, члены группы и все прочие пользователи обладают правами чтения файла, записи в него и его выполнения. В примере показаны обозначения как для класса доступа, так и для прав доступа внутри класса.

Для задания режима доступа в символьном виде используется следующий синтаксис:

[кому] операция права

Часть [кому] есть комбинация букв u, g и o (владелец, члены группы и прочие пользователи соответственно). Если часть кому опущена или указано a, то это эквивалентно ugo.

Операция может быть: + (добавить право), - (лишить права), = (в пределах данного класса присвоить права абсолютно, то есть добавить указанные права и отнять неуказанные).

Права - любая осмысленная комбинация следующих букв:

Опустить часть права можно только если операция есть = (для лишения всех прав).

Если надо сделать более одного указания об изменении прав, то при использовании символьного вида в правах не должно быть пробелов, а указания должны разделяться запятыми. Например, команда

Chmod u+w,go+x f1

добавит для владельца право писать в файл f1, а для членов группы и прочих пользователей - право выполнять файл. Права устанавливаются в указанном порядке. Право s можно добавлять только для пользователя и группы, право t - только для пользователя.

Учет блокировки доступа (l) к файлу и его частям означает возможность монопольного захвата сегментов файла на время их обработки. Нельзя, однако, разрешить выполнение файла для членов группы и одновременно учитывать блокировку файла. Нельзя также разрешить переустановить при выполнении действующий идентификатор группы и учитывать блокировку файла. Таким образом, следующие команды являются некорректными:

Chmod g+x,+l f2 chmod g+s,+l f3 Попытка их выполнения вызовет соответствующую диагностику.

Изменить режим доступа к файлу может только его владелец или суперпользователь. Бит навязчивости может установить только суперпользователь. Чтобы добавить право переустановки идентификатора группы, надо быть членом этой группы; кроме того, для членов группы должно быть установлено право выполнения.

Для просмотра прав доступа и контроля при их изменении используется команда с флагом -l. Права переустановки идентификаторов пользователя и группы отмечаются буквой s на месте соответствующей буквы x: малой s, если соответствующая категория пользователей имеет право x, и большой S - если не имеет; право t отмечается на месте последней буквы x: малой t, если прочие пользователи имеют право выполнять файл, и большой T - если не имеют. Право l отмечается на месте права x для членов группы.

ПРИМЕРЫ

  1. Чтобы установить права, позволяющие владельцу читать и писать в файл, а членам группы и прочим пользователям только читать, надо сложить 0400, 0200, 0040 и 0004. Таким образом, команду можно записать двумя способами: chmod 644 f1 chmod u=rw,go=r f1
  2. Позволить всем выполнять файл f2: chmod +x f2
  3. Учитывать блокировку доступа к файлу f3: chmod +l f3
  4. Дать всем права на чтение запись и выполнение, а также на переустановку идентификатора группы при выполнении файла f4: chmod =rwx,g+s f4 chmod 2777 f4

Команда chmod используется для изменения прав доступа к файлам или каталогам.

В Linux и других Unix-подобных операционных системах для каждого файла существует набор правил, которые определяют, кто и как может получить доступ к этому файлу. Эти правила называются правами доступа к файлам или режимами файлов. Имя команды chmod означает «режим изменения» и используется для определения способа доступа к файлу.

В общем виде команды chmod выглядят так:

chmod параметры разрешения имя файла

Если параметры не указаны, chmod изменяет разрешения файла, указанного в имени файла , на разрешения, указанные в разрешениях .

Разрешения определяют права доступа для владельца файла («пользователь»), членов группы, владеющей файлом («группа»), и всех остальных («другие»). Существует два способа представления этих разрешений: с помощью символов (буквенно-цифровых символов) или восьмеричных чисел (цифры от 0 до 7).

Допустим, вы являетесь владельцем файла с именем myfile и хотите установить его разрешения так, чтобы:

  1. пользователь (u ser) мог читать (r ead), писать (w rite) и выполнять (x ecute) его;
  2. члены группы (g roup) могут прочитать (r ead) и выполнить (x ecute) его;
  3. а также другие (o thers) могут только читать (r ead) его.

Эта команда будет выглядеть вот так:

chmod u=rwx,g=rx,o=r myfile

В этом примере используется символьная запись разрешений. Буквы u, g и o обозначают «пользователь», «группа» и «другое». Знак равенства («=») означает «установить права доступа именно так», а буквы «r», «w» и «x» означают «чтение», «запись» и «выполнение» соответственно. Запятые разделяют различные классы разрешений, и между ними нет пробелов.

Вот эквивалентная команда, использующая восьмеричное обозначение разрешений:

chmod 754 myfile

Здесь цифры 7, 5 и 4 каждая по отдельности представляют разрешения для пользователя, группы и других в этом порядке. Каждая цифра представляет собой комбинацию чисел 4, 2, 1 и 0:

  • 4 означает «читать»,
  • 2 означает «записать»,
  • 1 означает «выполнить»,
  • 0 означает «нет разрешения».

Таким образом, 7 представляет собой комбинацию разрешений 4 + 2 + 1 (read, write, and execute), 5 - это 4 + 0 + 1 (read, no write, and execute), а 4 - 4 + 0 + 0 (read, no write, and no execute).

Синтаксис chmod

chmod ... MODE[,MODE]... FILE... chmod ... OCTAL-MODE FILE... chmod ... --reference=RFILE FILE...

Параметры chmod

-c , --changes Подобно --verbose, но выдает подробный вывод только тогда, когда изменение действительно сделано.

-f , --silent , --quiet Бесшумный режим; подавлять большинство сообщений об ошибках.

-v , --verbose Подробный режим; вывести диагностическое сообщение для каждого обработанного файла.

--no-preserve-root Не обрабатывать "/" (корневой каталог) каким-либо особым образом, который является настройкой по умолчанию.

--preserve-root Не работать рекурсивно на «/».

--reference= RFILE Установить разрешения, соответствующие разрешениям файла RFILE, игнорируя любой указанный РЕЖИМ.

-R , --recursive Менять файлы и каталоги рекурсивно.

--help Показать справочное сообщение и выйти.

--version Вывести информацию о версии и выйти.

Техническое описание

chmod изменяет режим файла каждого указанного ФАЙЛА в соответствии с MODE, который может быть либо символическим представлением вносимых изменений, либо восьмеричным числом, представляющим битовую комбинацию для битов нового режима.

Формат символического режима:

[[+-=]...]

где perms - это ноль или более букв из набора r, w, x, X, s и t, или одна буква из набора u, g и o. Можно указать несколько символьных режимов, разделенных запятыми.

Комбинация букв u, g, o и элементов управления, которые изменят доступ пользователей к файлу: пользователь, которому он принадлежит (u), другие пользователи в группе файла (g), другие пользователи, которых нет в файле группа (o) или все пользователи (a). Если ничего из этого не дано, эффект будет таким, как если бы был задан a, но биты, которые установлены в umask, не затрагивались.

Оператор (+) вызывает добавление выбранных битов режима файла к существующим битам режима файла каждого файла; " -" вызывает их удаление; и "=" вызывает их добавление и приводит к удалению не упомянутых битов, за исключением того, что неизменяемые установленные пользователем биты каталога и идентификаторы группы не затрагиваются.

Буквы r, w, x, X, s и t выбирают биты режима файла для затронутых пользователей: чтение (r), запись (w), выполнение (x), выполнение только в том случае, если файл является каталогом или уже имеет разрешение на выполнение для некоторого пользователя (X) установите идентификатор пользователя или группы при выполнении (s), флаг ограниченного удаления или фиксированный бит (t). Для каталогов параметры выполнения X и X определяют разрешение на просмотр содержимого каталога.

Вместо одной или нескольких из этих букв вы можете указать одну из букв u, g или o: разрешения, предоставленные пользователю, которому принадлежит файл (u), разрешения, предоставленные другим пользователям, которые являются членами группы файла (g) и разрешения, предоставленные пользователям, которые не входят ни в одну из двух предыдущих категорий (o).

Числовой режим - от одной до четырех восьмеричных цифр (0-7), полученных путем сложения битов со значениями 4, 2 и 1. Предполагается, что пропущенные цифры являются ведущими нулями. Первая цифра выбирает заданный идентификатор пользователя (4) и заданный идентификатор группы (2) и атрибуты ограниченного удаления или закрепления (1). Вторая цифра выбирает права доступа для пользователя, которому принадлежат операции чтения (4), записи (2) и выполнения (1); третий выбирает права доступа для других пользователей в группе файла с теми же значениями; и четвертый для других пользователей, не входящих в группу файла, с теми же значениями.

chmod никогда не меняет права доступа к символическим ссылкам; системный вызов chmod не может изменить их разрешения. Но это не проблема, поскольку разрешения символических ссылок никогда не используются. Однако для каждой символической ссылки, указанной в командной строке, chmod изменяет права доступа к указанному файлу. Напротив, chmod игнорирует символические ссылки, встречающиеся во время рекурсивных обходов каталогов.

Биты Setuid и Setgid

chmod очищает бит set-group-ID обычного файла, если идентификатор группы файла не совпадает с эффективным идентификатором группы пользователя или одним из идентификаторов дополнительной группы пользователя, если только у пользователя нет соответствующих привилегий. Дополнительные ограничения могут привести к игнорированию битов set-user-ID и set-group-ID в MODE или RFILE. Это поведение зависит от политики и функциональности основного системного вызова chmod. В случае сомнений проверьте поведение системы.

chmod сохраняет биты set-user-ID и set-group-ID каталога, если вы не укажете иное. Вы можете установить или очистить биты с помощью символических режимов, таких как u + s и g-s, и вы можете установить (но не очистить) биты с помощью числового режима.

Флаг ограниченного удаления (или «Sticky Bit»)

Ограниченный флаг удаления или закрепленный бит - это один бит, интерпретация которого зависит от типа файла. Это предотвращает удаление или переименование файла в каталоге пользователям, которые не владеют файлом или каталогом; это называется флагом ограниченного удаления для каталога и обычно встречается в каталогах, доступных для записи во всем мире, таких как / tmp. Для обычных файлов в некоторых старых системах этот бит сохраняет текстовое изображение программы на устройстве подкачки, поэтому при запуске он загружается быстрее; это называется липким битом.

Как посмотреть разрешения файла

Быстрый и простой способ составить список прав доступа к файлу с помощью опции длинного списка (-l) команды ls. Например, чтобы просмотреть разрешения для file.txt, вы можете использовать команду:

Ls -l file.txt

Который будет отображать вывод, который выглядит следующим образом:

Примеры использования chmod

chmod 644 file.htm

Устанавливает для файла file.htm права «владелец может читать и писать; группа может только читать; другие могут только читать».

Chmod -R 755 myfiles

Рекурсивно (-R) меняет разрешения для каталога myfiles и всех его папок и файлов на режим 755. Пользователь может читать, записывать и выполнять; члены группы и другие пользователи могут читать и выполнять, но не могут писать.

Chmod u=rw example.jpg

Меняет разрешения для владельца example.jpg, чтобы владелец мог читать и записывать файл. Не меняет права доступа для группы или для других.

Chmod u+s comphope.txt

Устанавливает бит «Set-User-ID» файла comphope.txt, чтобы каждый, кто пытается получить доступ к этому файлу, сделал это так, как если бы он был владельцем файла.

Chmod u-s comphope.txt

Противоположность вышеупомянутой команды; снимает бит SUID

Chmod 755 file.cgi

Устанавливает разрешения для file.cgi на «чтение, запись и выполнение владельцем» и «чтение и выполнение группой и всеми остальными».

Chmod 666 file.txt

Устанавливает разрешение file.txt на «чтение и запись всеми».

Chmod a=rw file.txt

Выполняет то же самое, что и вышеприведенная команда, используя символическую запись.

Связанные команды

chown - Изменить владельца файлов или каталогов.
getfacl - Показать списки контроля доступа к файлам.
ls - список содержимого каталога или каталогов.