Права на папки и файлы (unix/chmod)
Примеры использования команды chmod в символьном режиме
Владельцы:
Права:
- a - All
- u - User
- g - Group
- o - Other
Добавить | Забрать |
+r | -r |
+w | -w |
+x | -x |
$ 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) к файлам подразделяются на:
Теперь о правах доступа (Chmod) к папке (директории):
Права доступа (Chmod) к файлам подразделяются на:
- r — право на чтение данных.
- w — право на изменение содержимого (запись – только изменение содержимого, но не удаление).
- x — право на исполнение файла.
Теперь о правах доступа (Chmod) к папке (директории):
- r — право на чтение директории (можно прочитать содержимое директории, т.е. получить список объектов, находящихся в ней)
- w — право на изменение содержимого директории (можно создавать и удалять объекты в этой директории, причем если вы имеете право на запись, то удалять вы сможете даже те файлы, которые вам не принадлежат)
- x — право, которое позволяет вам войти в директорию (это право всегда проверяется в первую очередь, и даже если вы имеете все нужные права на объект, который закопан глубоко в цепочке директорий, но не имеете права “X” для доступа хотя бы к одной директории на пути к этому файлу, то к нему вы так и не пробьетесь )
Синтаксис Chmod для групп пользователей
Сами права доступа (Chmod) подразделяются на три категории, в зависимости от того, кто обращается к объекту:
Вариации трех возможных значений «r», «w» и «x» для трех категорий «u», «g» и «o» и определяют Chmod к файлам. Если не задана какая-то категория, то она заменяется знаком дефисом «-». права доступа (Chmod) указываются последовательно в заданном порядке:
Для наглядности давайте разберем пример, где владелец файла («user» — «u») имеет все права: право на чтение, запись в него и исполнение, а все остальные пользователи только право на чтение. Запись таких Chmod будет выглядеть так: «rwx r-- r--». Рассмотрим ее в деталях: «rwx» (эта запись задает права на объект для владельца — «u»), «r--» (эта запись задает права на тот же объект, но в случае если пользователь отнесен сервером к группы — «g»), «r--» (эта запись задает права на объект для всех остальных пользователей — o").
- «user» — u (непосредственно владелец файла)
- «group» — g (член той же группы, к которой принадлежит владелец)
- «world» — o (все остальные)
Вариации трех возможных значений «r», «w» и «x» для трех категорий «u», «g» и «o» и определяют Chmod к файлам. Если не задана какая-то категория, то она заменяется знаком дефисом «-». права доступа (Chmod) указываются последовательно в заданном порядке:
- сначала права для владельца — «u»
- затем для группы — «g»
- и в конце права для всех остальных — «o»
Для наглядности давайте разберем пример, где владелец файла («user» — «u») имеет все права: право на чтение, запись в него и исполнение, а все остальные пользователи только право на чтение. Запись таких Chmod будет выглядеть так: «rwx r-- r--». Рассмотрим ее в деталях: «rwx» (эта запись задает права на объект для владельца — «u»), «r--» (эта запись задает права на тот же объект, но в случае если пользователь отнесен сервером к группы — «g»), «r--» (эта запись задает права на объект для всех остальных пользователей — o").
Чем отличаются Chmod файлов и папок
«Права» |
«Файл» |
«Папка» |
— |
Ничего нельзя делать |
Доступ к каталогу и его подкаталогам запрещен |
r-- |
Можно читать содержимое |
Можно прочитать содержимое папки |
rw- |
Можно видеть и изменять содержимое |
Можно добавить, удалить, изменить файл папки |
rwx |
Читать, изменять и выполнять файл |
Можно читать, удалять, изменять файлы, сделать каталог текущим, т.е. “войти” в этот каталог. |
r-x |
Можно прочитать, либо выполнить |
Можно зайти в каталог и прочитать его содержимое, удалять или добавлять файлы нельзя. |
--x |
Выполнить, если файл двоичный |
Пользователь может выполнить двоичный файл о существовании которого ему известно, зайти или прочитать каталог запрещено |
Синтаксис Chmod выраженных в цифрах (777)
Вы видите, что здесь для описания прав доступа используются записи с
использованием латинских букв и дефисов, но вы, наверное, уже
сталкивались с тем, что обычно Chmod задают в цифровом виде, например,
всем известная комбинации: Chmod 777, разрешающая все и всем.
Действительно, права доступа (Chmod) так же обозначают и цифрами:
А теперь давайте рассмотрим различные комбинации Chmod в цифрах, применительно к группам пользователей:
Вы сами (кроме того случая, когда вы получаете доступ к сайту по FTP)
и все остальные посетители вашего сайта, относитесь к группе “word”
(все остальные), поэтому для работы с вебсайтом нам нужно в первую
очередь смотреть на последнюю (третью) цифру Chmod. Для того чтобы при
работе пользователя с сайтом «запускался файл» скрипта достаточно будет,
чтобы на него были установлены права доступа (Chmod), начиная от «4»
(r-- – только чтение) (5,6,7 тоже подойдут, но это будет лишнее в плане
безопасности).
«Для папки» же, в которой лежит файл этого скрипта, нужно выставить минимум «5» (r-x — можно зайти в папку и прочитать его содержимое, удалять или добавлять нельзя). 7 тоже подойдет, но тоже будет уже лишним в плане безопасности. Если нужно, чтобы скрипт не только читался, но и «записывал» какие-то данные (например, введенные пользователем), то минимальные права на «папку» по-прежнему будут «5», но для «файла» уже понадобятся права «6» (читать и записывать).
Скорей всего на сервере, куда вы скопировали содержимое движка вашего сайта, будут установлены следующие Chmod к объектам:
- r (читать) заменяют на 4
- w (запись) заменяют на 2
- x (исполнение) заменяют на 1
- 7 (rwx) = 4 + 2 +1 (полные права)
- 5 (r-x)= 4 + 0 + 1 (чтение и выполнение)
- 6 (rw-) = 4 + 2 + 0 (чтение и запись)
- 4 (r--) =4 + 0 + 0 (только чтение)
- и т.д.
«Права» |
«„Цифровая форма“» |
«„Символьная форма“» |
Ничего нельзя делать |
0 |
— |
Только чтение |
4 |
r-- |
Только запись |
2 |
-w- |
Только выполнение |
1 |
--x |
Чтение и запись |
6 |
rw- |
Чтение и выполнение |
5 |
r-x |
Чтение, запись, выполнение |
7 |
Rwx |
«Права» |
«„Владелец“» |
«„Группа“» |
«„Остальные“» |
777 |
читать записывать исполнять |
читать записывать исполнять |
Читать записывать исполнять |
776 |
читать записывать исполнять |
читать записывать исполнять |
Читать записывать |
775 |
читать записывать исполнять |
читать записывать исполнять |
Читать исполнять |
774 |
читать записывать исполнять |
читать записывать исполнять |
Читать |
766 |
читать записывать исполнять |
читать записывать |
Читать записывать |
655 |
читать записывать |
читать исполнять |
Читать исполнять |
644 |
читать записывать |
читать |
Читать |
«Для папки» же, в которой лежит файл этого скрипта, нужно выставить минимум «5» (r-x — можно зайти в папку и прочитать его содержимое, удалять или добавлять нельзя). 7 тоже подойдет, но тоже будет уже лишним в плане безопасности. Если нужно, чтобы скрипт не только читался, но и «записывал» какие-то данные (например, введенные пользователем), то минимальные права на «папку» по-прежнему будут «5», но для «файла» уже понадобятся права «6» (читать и записывать).
Скорей всего на сервере, куда вы скопировали содержимое движка вашего сайта, будут установлены следующие Chmod к объектам:
Папки 755
владелец (user) может всё, группа и все остальные могут только читать
папки и заходить в них, но им запрещено записывать файлы, изменять
названия и стирать их в директориях. (rwxr-xr-x)
Файлы 644
владелец (user) может читать и изменять файлы, исполнять ему их
запрещено, всем остальным запрещено их изменять и исполнять, остальные
могут только читать. «(rw-r--r--)»
Если бы у вас был сайт, состоящий из одних html, то можно было бы все так и оставить. Но современные сайты построены на движках, и там могут быть объекты, в которые нужно будет производить запись от имени пользователей из группы «world» — o (все остальные). Это могут быть папки, используемые для кэширования страниц или те, в которые по ходу работы с сайтом будут загружаться картинки и др. Само собой, что если вы зайдете на сайт по FTP, то сможете призвести запись в эти файлы или папки, но работая с интерфейсом вебсайта, как обычный пользователь, у вас могут возникнуть проблемы. Поэтому к установке тех или иных Chmod надо подходить избирательно:
Если бы у вас был сайт, состоящий из одних html, то можно было бы все так и оставить. Но современные сайты построены на движках, и там могут быть объекты, в которые нужно будет производить запись от имени пользователей из группы «world» — o (все остальные). Это могут быть папки, используемые для кэширования страниц или те, в которые по ходу работы с сайтом будут загружаться картинки и др. Само собой, что если вы зайдете на сайт по FTP, то сможете призвести запись в эти файлы или папки, но работая с интерфейсом вебсайта, как обычный пользователь, у вас могут возникнуть проблемы. Поэтому к установке тех или иных Chmod надо подходить избирательно:
755 |
для всех папок, в которых должны записываться файлы, но не надо регулярно их стирать |
777 |
для папок, в которые должны записываться и стираться файлы (например, для Кеша) |
644 |
для простых файлов, используемых только для чтения (.html, .php и др.) |
666 |
для файлы в которые может понадобится осуществлять запись (например, с базами данных .dat) |
Chmod — как назначить права доступа (PHP)
chmod('./folder', octdec('664'));или
chmod('./folder', 0664);
Комментарии
Отправить комментарий