Команда chmod – изменение прав доступа. Chmod: изменение прав доступа Chmod что за команда

Сегодня я хотел бы поговорить о правах доступа к файлам и папкам (читайте ). Это понятие пришло в мир вебмастеринга из linux (Unix) подобных систем, на которых работает большинство хостингов.

Да и само название Chmod является наименованием программы в linux, которая позволяет назначить права доступа различным объектам. А раз ваш сайт установлен на сервере под управлением linux (Unix) той или иной вариации, то и работа с объектами вашего вебсайта будет подчинена правилам, установленным операционными системами linux (Unix).

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

Базовые понятия прав доступа к файлам и папкам

Если же все пустить это дело на самотек и не заморачиваться с установкой нужных привилегий, то вероятность взлома вашего ресурса или заражения его вредоносным кодом будет очень велика. Хорошо, если вы осуществляли всех ваших данных, а если нет?!

Поэтому лучше сразу же, не откладывая в долгий ящик, произвести настройку и изменение Чмод для всех важных объектов вашего движка, исходя из принципа минимализма. Т.е. давать объектам минимально необходимые для корректной работы вебсайта права .

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

В свою очередь, по отношению к файлам возможно:

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

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

По отношению к директориям возможно:

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

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

Привилегии для групп пользователей

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

  • «user» — u (непосредственно владелец файлика)
  • «group» — g (член той же группы, к которой принадлежит владелец)
  • «world» — o (все остальные)

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

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

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

  1. сначала права для владельца — «u»
  2. затем для группы — «g»
  3. и в конце — для всех остальных — «o»

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

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

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

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

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

Получается, что существует три группы пользователей и три возможных действия с объектами. Еще не запутались? Разложим все сказанное выше по полочкам в виде табличек. Сначала наглядно посмотрим, чем они отличаются:

А так же табличка, показывающая разнообразные комбинации Chmod для разных типов объектов:

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

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

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

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

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

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

Chmod, выраженные в цифрах (777, 400, 666, 755, 444)

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

Действительно, привилегии так же обозначают и цифрами:

  1. r (читать) заменяют на 4
  2. w (запись) заменяют на 2
  3. x (исполнение) заменяют на 1
  4. 0 означает – ничего не делать (то, что в буквенной записи обозначается дефисом)

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

Т.е. получается, что сумма этих цифр и показывает Чмод по отношению к файлам или папке. Например:

  • 7 (rwx) = 4 + 2 +1 (полные права)
  • 5 (r-x)= 4 + 0 + 1 (чтение и выполнение)
  • 6 (rw-) = 4 + 2 + 0 (чтение и запись)
  • 4 (r--) =4 + 0 + 0 (только чтение)
  • и т.д.

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

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

«Владелец»

«Группа»

«Остальные»

исполнять

исполнять

исполнять

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

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

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

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

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

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

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

для всех директорий, в которых должны записываться файлики, но не надо регулярно их стирать

для папок, в которые должны записываться и стираться файлы (например, для кеша)

для простых файлов, используемых только для чтения (.html, .php и др.)

для файлов, в которые может понадобится осуществлять запись (например, с базами данных.dat)

Как назначить Chmod посредством PHP

Как же все это можно реализовать на практике для своего сайта? В принципе, все просто. Для назначения прав доступа можно :

Но если Чмод на какие-либо файлы поменять не получается, то можно попробовать назначить их PHP средствами. Вы можете воспользоваться следующим кодом:

Вам надо будет заменить file_name_x.php и directory_name_x на реальные имена файлов и папок, Чмод к которым вы хотите изменить. Соответственно, для файликов установится 666, а для каталогов - 777. Поместите это PHP код в файлик с помощью любого текстового блокнота (рекомендую ) и дайте ему расширение.php, ну, например, как prava.php.

prava.php скопируйте по FTP в ту директорию, в которой не получается штатными средствами назначить права доступа. В адресной строке браузера пропишите путь до prava..php) и нажмите «Пуск» или энтер на клавиатуре. Все, теперь привилегии будут стопроцентно изменены средствами PHP.

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

Administrator/backups/ administrator/cache/ administrator/components/ administrator/modules/ administrator/templates/ cache/ components/ images/ images/banners/ images/stories/ language/ language/en-GB/ language/ru-RU/ media/ modules/ plugins/ plugins/content/ plugins/search/ plugins/system/ templates/

После того, как вы установите для Джумлы все расширения и произведете окончательные настройки, Chmod к большинству из приведенных выше директорий следует в целях повышения безопасности сайта вернуть к 755 . Оставить 777 нужно будет на каталоги с кешем, с бекапом и с картинками.

Для файлов движка, находящихся в корне сайта, кроме sitemap.xml, лучше установить 444 (для всех групп посетителей только чтение). На seting.php иногда советуют даже установить 400.

Точно такие же советы могу дать и по поводу установки прав доступа на объекты в движках SMF и WordPress. Желательно, по возможности, оставлять на постоянной основе для директорий 755 (кроме оговоренных выше каталогов кеша, картинок, бекапа и может быть еще каких-то, по мере необходимости), а для файликов — 644 .

На файлы в корне сайта лучше поставить 444.

Если при работе с сайтом возникнет проблема с невозможностью записи настроек в какой-нибудь файлик или невозможностью создать какую нибудь директорию, то можно временно поставить на них большие права (777, например), а потом все вернуть обратно (от греха подальше). И ни в коем случае не стоит оставлять (для простоты работы с сайтом) необоснованно завышенные Chmod.

Удачи вам! До скорых встреч на страницах блога сайт

Вам может быть интересно

Кодировка текста ASCII (Windows 1251, CP866, KOI8-R) и Юникод (UTF 8, 16, 32) - как исправить проблему с кракозябрами
OpenServer - современный локальный сервер и пример его использования для установки WordPress на компьютер
Что такое URL адреса, чем отличаются абсолютные и относительные ссылки для сайта
Поиск Яндекса по сайту и интернет-магазину
Карта сайта Sitemap в формате xml для Яндекса и Google - как создать сайтмап в Joomla и WordPress или в онлайн генераторе

In our documentation of the umask command. It contains a comprehensive description of how to define and specify file permissions.

In general, chmod commands take the form:

Chmod options permissions file name

If no options are specified, chmod modifies the permissions of the file specified by file name to the permissions specified by permissions .

permissions defines the permissions for the owner of the file (the "user"), members of the group who owns the file (the "group"), and anyone else ("others"). There are two ways to represent these permissions: with symbols (alphanumeric characters), or with octal numbers (the digits 0 through 7 ).

Let"s say you are the owner of a file named myfile , and you want to set its permissions so that:

  1. the u ser can r ead, w rite, and ex ecute it;
  2. members of your g roup can r ead and ex ecute it; and
  3. o thers may only r ead it.

This command will do the trick:

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

This example uses symbolic permissions notation. The letters u , g , and o stand for "user ", "group ", and "other ". The equals sign ("= ") means "set the permissions exactly like this," and the letters "r ", "w ", and "x " stand for "read", "write", and "execute", respectively. The commas separate the different classes of permissions, and there are no spaces in between them.

Here is the equivalent command using octal permissions notation:

Chmod 754 myfile

Here the digits 7 , 5 , and 4 each individually represent the permissions for the user, group, and others, in that order. Each digit is a combination of the numbers 4 , 2 , 1 , and 0 :

  • 4 stands for "read",
  • 2 stands for "write",
  • 1 stands for "execute", and
  • 0 stands for "no permission."

So 7 is the combination of permissions 4 +2 +1 (read, write, and execute), 5 is 4 +0 +1 (read, no write, and execute), and 4 is 4 +0 +0 (read, no write, and no execute).

Syntax

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

Options

-c , --changes

Like --verbose , but gives verbose output only when a change is actually made.

-f , --silent , --quiet

Quiet mode; suppress most error messages.

-v , --verbose

Verbose mode; output a diagnostic message for every file processed.

--no-preserve-root

Display a help message and exit.

The file"s owner.

hopestaff

The group to whom the file belongs.

Feb 03 15:36

The file"s mtime (date and time when the file was last modified).

file.txt

The name of the file.

Examples

chmod 644 file.htm

Set the permissions of file.htm to "owner can read and write; group can read only; others can read only".

Chmod -R 755 myfiles

Recursively (-R ) Change the permissions of the directory myfiles , and all folders and files it contains, to mode 755 : User can read, write, and execute; group members and other users can read and execute, but cannot write.

Chmod u=rw example.jpg

Change the permissions for the owner of example.jpg so that the owner may read and write the file. Do not change the permissions for the group, or for others.

Chmod u+s comphope.txt

Set the "Set-User-ID" bit of comphope.txt , so that anyone who attempts to access that file does so as if they are the owner of the file.

Chmod u-s comphope.txt

The opposite of the above command; un-sets the SUID bit.

Chmod 755 file.cgi

Set the permissions of file.cgi to "read, write, and execute by owner" and "read and execute by the group and everyone else".

Chmod 666 file.txt

Set the permission of file.txt to "read and write by everyone.".

Chmod a=rw file.txt

Accomplishes the same thing as the above command, using symbolic notation.

Related commands

chown — Change the ownership of files or directories.
getfacl — Display file access control lists.
ls — List the contents of a directory or directories.

Продолжаем подробно рассказывать вам о пользователях и группах в Linux и сегодня поговорим о том как пользоваться командами chown и chmod.

CHOWN

Chown — от английского change own. И так, как вы знаете в Linux есть пользователи и группы. У каждого пользователя есть свои файлы, созданные или загруженные. Каждый пользователь находится в собственной группе и может быть объеден c другими пользователями в другие группы.

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

Если вы хотите поменять или сменить владельца (пользователя) файла тогда вам поможет команда:

Sudo chown userName text.txt

В данном примере мы присвоили файл text.txt пользователю userName.

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

Sudo chgrp groupName text.txt

Для того чтобы не вводить 2 разные команды делают так:

Sudo chown userName:groupName text.txt

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

sudo chown имя_владельца : имя_группы text.txt

Если вам нужно поменять в директории владельца и группу, а там множество файлов и папок тогда используйте ключ -R:

Sudo chown -R userName:groupName /var/www/site/

CHMOD

И так мы знаем, что существуют пользователи, группы. Теперь поговорим о правах доступа. Для чего этого необходимо? Например у вас есть директория в которой находятся личные файлы. Чтобы вы, владелец , например могли редактировать, просматривать файлы, группа , только видеть данные, файлы, а остальные пользователи которые не входят ни в одну из групп и не являются владельцами, вообще не могли ничего сделать, вот поэтому и необходимы права доступа.

Права на файл могут обозначаться цифрами и буквами:

Значения прав в цифрах суммируются:

  • полные права (rwx) 7 = 4 + 2 +1
  • чтение и запись (rw-) 6 = 4 + 2 + 0
  • чтение и выполнение (r-x) 5 = 4 + 0 + 1
  • только чтение 4 (r—) = 4 + 0 + 0
  • только запись 2 (-w-) = 0 + 2 + 0
  • права отсутствуют (—) 0 = 0 + 0 + 0

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

Владелец Группа Остальные
u g o
права доступа буквы права доступа цифры
rwxrwxrwx 777 читают, записывают, выполняют все
rwxr-xr-x 755 читает, записывает, выполняет читать и запускать
rw-r—r— 644 чтение и запись только четние
r——— 400 читает только владец

Изменять права доступа на файл или директорию командой chmod можно как числами, так буквами.

Назначение прав доступа цифрами

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

Sudo chmod 755 text.txt

Для директорий необходимо после chmod добавить ключ -R .

Чуть ниже полезная команда, как массово поменять права во всех папках и под папках.

Для папок:

Find /ваш_путь -type d -exec chmod 755 {} \;

Для файлов:

Find /ваш_путь -type f -exec chmod 644 {} \;

Назначение прав доступа буквами

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

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

u user Владелец
g group

Команда chmod (CHange MODe - изменить режим) имеет весьма специфический синтаксис. Синтаксис в общем случае:
но чем она характеризуется, так это тем, что изменение режима может принимать разные формы. Оно может быть указано двумя способами:

  1. в виде восьмеричного числа. Разрешения владельца при этом соответствуют числам в виде 00 , где соответствует назначаемому разрешению: 4 на чтение, 2 на запись и 1 на выполнение. Аналогично, разрешения группы владельца принимают вид 0 , а разрешения для «остальных » - . Затем, все что вам нужно сделать - так это найти сумму назначаемых разрешений, чтобы получить нужный режим. Так, разрешения rwxr-xr-- соответствуют 400+200+100 (разрешения для владельца, rwx) +40+10 (разрешения для группы, r-x) +4 (разрешения для остальных, r--) = 754; таким образом, разрешения выражаются через свободные члены. Это значит, что предыдущие разрешения безусловно заменяются;
  2. при помощи выражений. При этом разрешения выражаются через последовательность выражений, разделенных запятыми. Отсюда выражение принимает следующий вид: [категория]<+|-|=><разрешения> .
Примеры:
  • chmod -R o-w /shared/docs : рекурсивно удаляет разрешение на запись для остальных у всех файлов и подкаталогов в каталоге /shared/docs/ .
  • chmod -R og-w,o-x private/ : рекурсивно удаляет разрешение на запись для группы и остальных у всего каталога private/ , и удаляет разрешение на выполнение для остальных.
  • chmod -c 644 misc/file* : изменяет разрешения для всех файлов в каталоге misc/ , чьи имена начинаются с file на rw-r--r-- (т.е. разрешение на чтение для всех и разрешение на запись только для владельца), и сообщает только о тех файлах, которые были подвержены действию команды.

В следующем примере показано, как разрешить всем пользователям читать файл, вносить в него изменения и сохранять их. Для этого надо изменить права доступа группы «остальные ».
Введите в командной строке:
ls -l example1.txt На экран будет выведена следующая информация:
-rw-rw-r-- 1 user user 42 Мар 24 22:07 example1.txt Теперь введите такую команду:
chmod o+w example1.txt Команда o+w означает, что вы даете права «остальным » («others », обозначается буквой «о ») на запись в файл example1.txt . Чтобы увидеть, к чему привело выполнение указанной команды, опять посмотрим на файл:
-rw-rw-rw- 1 user user 42 Мар 24 22:09 example1.txt Теперь все могут читать и осуществлять запись в файл.
Чтобы запретить чтение файла example1.txt и запись в него, используйте команду chmod .
chmod go-rw example1.txt Команда go-rw сообщает системе, что вы хотите запретить чтение файла example1.txt и запись в него группе и «остальным ».
В результате права доступа будут выглядеть так:
-rw------- 1 user user 42 Мар 24 22:10 example1.txt Рассмотренные классы и права являются сокращениями от соответствующих английских слов, поэтому их легко запомнить: все, что нужно помнить, — это несколько символов и букв.
Вот список расшифровок данных сокращений:

Классы u — пользователь, который является владельцем файла (от английского «user »);
g — группа, к которой принадлежит пользователь (от английского «group »);
o — остальные (не владелец и не группа-владелец, от английского «others »);
a — все (u , g и o , от английского «all »). Права r — право на чтение;
w — право на запись;
x — право на исполнение. Действия + — дает право;
- — отбирает право;
= — оставляет только данное право.

Хотите проверить ваши знания? Отберите у всех пользователей все права на файл example1.txt .
chmod a-rwx example1.txt А сейчас проверьте, можете ли вы прочитать данный файл командой cat example1.txt . Вы должны увидеть следующее:
cat: example1.txt: Permission denied Отозвав все права, включая ваши собственные, вы заблокировали доступ к файлу. Но так как файл принадлежит вам, всегда можно вернуть права следующей командой:
chmod u+rw example1.txt Чтобы убедиться что вы можете прочитать данный файл, воспользуйтесь командой cat example1.txt .
Приведем несколько примеров использования команды chmod:

  • g+w — дает группе-владельцу право на запись;
  • o-rwx — отбирает все права у остальных пользователей;
  • u+x — дает владельцу право на выполнение файла;
  • a+rw — позволяет любому читать и записывать в файл;
  • ug+r — позволяет владельцу и группе читать файл;
  • g=rx — позволяет группе читать и исполнять файл (не записывать в него).

Опция -R позволяет изменять права для всего дерева каталогов.
Поскольку каталоги нельзя «исполнять » как приложения, добавление или отмена соответствующего права означает разрешение (или запрет) просмотра каталога.
Например, если вы не позволили остальным пользователям исполнять каталог docs/ , не имеет значения, кому дано право на чтение и запись. Никто не получит доступ к содержимому каталога, если не знает точное имя находящегося в нем файла.
Наберите, например:
chmod a-x docs чтобы отозвать у всех пользователей право на исполнение.
Если теперь вы попытаетесь изменить каталог при помощи команды cd docs , получите отказ:
bash: docs: Permission denied Верните права себе и своей группе:
chmod ug+x docs Если вы сейчас проверите результаты своих действий при помощи команды ls -l , вы увидите, что доступ к каталогу docs/ запрещен только остальным пользователям.

Команда 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 .