- Команда chmod Linux
- Команда chmod Linux
- Примеры использования chmod
- Выводы
- Linux chmod только папки
- linux
- Примеры использования команды chmod в символьном режиме
- Примеры использования команды chmod в абсолютном режиме
- Смена прав только у директорий (рекурсивно)
- Смена прав только у файлов (рекурсивно)
- Синтаксис Chmod для папок и файлов
- Синтаксис Chmod для групп пользователей
- Чем отличаются Chmod файлов и папок
- Синтаксис Chmod выраженных в цифрах (777)
- Папки 755
- Файлы 644
- Chmod — как назначить права доступа (PHP)
Команда chmod Linux
Система полномочий в Linux имеет очень важное значение, поскольку благодаря ей можно разделять привилегии между пользователями, ограничить доступ к нежелательным файлам или возможностям, контролировать доступные действия для сервисов и многое другое. В Linux существует всего три вида прав — право на чтение, запись и выполнение, а также три категории пользователей, к которым они могут применяться — владелец файла, группа файла и все остальные.
Эти права применяются для каждого файла, а поскольку все в системе Linux, даже устройства, считаются файлами, то, получается что эти права применимы ко всему. Мы более подробно рассматривали как работают права доступа к файлам Linux в отдельной статье, а этой, я хочу остановиться на команде chmod, которая используется для установки прав.
Команда chmod Linux
Эта команда имеет типичный для команд linux синтаксис, сначала команда, затем опции, а в конце файл или папка, к которой ее нужно применить:
$ chmod опции права /путь/к/файлу
Сначала рассмотрим какими бывают права доступа linux и как они устанавливаются. Пред этим рекомендую прочитать статью про права, ссылка на которую есть выше. Есть три основных вида прав:
Также есть три категории пользователей, для которых вы можете установить эти права на файл linux:
Синтаксис настройки прав такой:
группа_пользователей действие в ид_прав
В качестве действий могут использоваться знаки «+» — включить или «-« — отключить. Рассмотрим несколько примеров:
- u+x — разрешить выполнение для владельца;
- ugo+x — разрешить выполнение для всех;
- ug+w — разрешить запись для владельца и группы;
- o-x — запретить выполнение для остальных пользователей;
- ugo+rwx — разрешить все для всех;
Но права можно записывать не только таким способом. Есть еще восьмеричный формат записи, он более сложен для понимания, но пишется короче и проще. Я не буду рассказывать как считать эти цифры, просто запомните какая цифра за что отвечает, так проще:
Права на папку linux такие же, как и для файла. Во время установки прав сначала укажите цифру прав для владельца, затем для группы, а потом для остальных. Например, :
- 744 — разрешить все для владельца, а остальным только чтение;
- 755 — все для владельца, остальным только чтение и выполнение;
- 764 — все для владельца, чтение и запись для группы, и только чтение для остальных;
- 777 — всем разрешено все.
Каждая из цифр не зависит от предыдущих, вы вбираете именно то, что вам нужно. Теперь давайте рассмотрим несколько опций команды, которые нам понадобятся во время работы:
- -c — выводить информацию обо всех изменениях;
- -f — не выводить сообщения об ошибках;
- -v — выводить максимум информации;
- —preserve-root — не выполнять рекурсивные операции для корня «/»;
- —reference — взять маску прав из указанного файла;
- -R — включить поддержку рекурсии;
- —version — вывести версию утилиты;
Теперь, когда вы знаете опции и как настраиваются права доступа chmod, давайте рассмотрим несколько примеров как работает команда chmod linux.
Примеры использования chmod
Я не буду приводить много примеров, так как там и так все более-менее понятно после пояснения правил создания выражений установки прав. Сначала самый частый случай — разрешить выполнения скрипта владельцу:
Или можно воспользоваться цифровой записью:
chmod 766 file
ls — l file
Недостаток цифровой записи в том, что вы не можете модифицировать уже существующие права доступа linux. Например, в первом варианте вы просто добавили флаг выполнения для владельца файла, а все остальные права оставили неизменными. В восьмеричном варианте мы полностью заменили текущие права новыми — все для владельца и чтение/запись для группы и остальных. Как видите, права установлены как и ожидалось. Теперь отключим выполнение владельцем:
Дальше разрешим только чтение всем, кроме владельца:
Файлы с правами 000 недоступны никаким пользователям, кроме суперпользователя и владельца. Вернем права обратно:
Такая же ситуация с файлами, владельцем которых вы не являетесь, если вы хотите изменить их права — используйте sudo. Из модификаторов прав вы можете конструировать любые последовательности, я думаю тут нет смысла разбирать их все. Для того чтобы поменять права на все файлы в папке используйте опцию -R:
chmod -R ug+rw dir
ls -l dir/
Также вы можете смотреть подробную информацию про вносимые изменения, например:
Выводы
В этой небольшой статье была рассмотрена команда chmod linux. Она очень часто используется наряду с такими командами, как chown и umask для управления правами. Надеюсь, эта информация была полезной для вас. Если у вас остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Linux chmod только папки
Как? Погуглив. Нашел. Оказалось совсем несложно, как обычно..
# для директорий используем -type d
cd /home/target_dir
find . -type d -exec chmod 755 > \;
# для файлов -type f
cd /home/target_dir
find . -type f -exec chmod 644 > \;
# по маске имени с параметром -name
cd /home/target_dir
find . -type f -name '*.htm*' -exec chmod 644 > \;
# для наглядности можно выполнить
find /home/target_dir/ -type f -name '*.php' -exec echo '-- '> \;
Хороший человек объяснил подробности. «;» — терминатор екзека и шелла одновременно, поэтому его в шелле надо заэксейпить. Ну а «<>» результат файнда построчно.
linux
Примеры использования команды chmod в символьном режиме
(Изначальное значение прав доступа файла file — rwxrwxrwx – полный доступ для всех) Отмена разрешения на выполнение файла для всех пользователей и групп:
Примеры использования команды chmod в абсолютном режиме
Права доступа к файлу для чтения, записи, выполнения владельцем и чтения, выполнения группе и другим:
Разрешение доступа к файлу на чтение и выполнение пользователю и остальным и запрет доступа для группы:
Если вы хотите назначить права доступа на все файлы в текущем каталоге, просто поставьте после назначаемых прав доступа знак * (звездочка):
В результате выполнения этой команды владелец получит полные права (чтение, изменение, выполнение) на все файлы текущего каталога, а группа и другие пользователи – только чтение и выполнение. Если вы хотите, чтобы ваши действия распространились рекурсивно (включая все подкаталоги), воспользуйтесь опцией -R:
Результатом выполнения вышеприведенной команды будет рекурсивный “обход” всех подкаталогов текущего каталога и назначение полного доступа для всех пользователей и групп. В этой статье рассмотрены лишь некоторые примеры применения команды 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)
$ find /path/to/base/dir -type f -print0 | xargs -0 chmod 644
Синтаксис Chmod для папок и файлов
r — право на чтение директории (можно прочитать содержимое директории, т.е. получить список объектов, находящихся в ней)
w — право на изменение содержимого директории (можно создавать и удалять объекты в этой директории, причем если вы имеете право на запись, то удалять вы сможете даже те файлы, которые вам не принадлежат)
x — право, которое позволяет вам войти в директорию (это право всегда проверяется в первую очередь, и даже если вы имеете все нужные права на объект, который закопан глубоко в цепочке директорий, но не имеете права “X” для доступа хотя бы к одной директории на пути к этому файлу, то к нему вы так и не пробьетесь )
Синтаксис Chmod для групп пользователей
Чем отличаются Chmod файлов и папок
«Права» | «Файл» | «Папка» |
— | Ничего нельзя делать | Доступ к каталогу и его подкаталогам запрещен |
r— | Можно читать содержимое | Можно прочитать содержимое папки |
rw- | Можно видеть и изменять содержимое | Можно добавить, удалить, изменить файл папки |
rwx | Читать, изменять и выполнять файл | Можно читать, удалять, изменять файлы, сделать каталог текущим, т.е. “войти” в этот каталог. |
r-x | Можно прочитать, либо выполнить | Можно зайти в каталог и прочитать его содержимое, удалять или добавлять файлы нельзя. |
—x | Выполнить, если файл двоичный | Пользователь может выполнить двоичный файл о существовании которого ему известно, зайти или прочитать каталог запрещено |
Синтаксис Chmod выраженных в цифрах (777)
«Права» | «„Цифровая форма“» | «„Символьная форма“» |
Ничего нельзя делать | 0 | — |
Только чтение | 4 | r— |
Только запись | 2 | -w- |
Только выполнение | 1 | —x |
Чтение и запись | 6 | rw- |
Чтение и выполнение | 5 | r-x |
Чтение, запись, выполнение | 7 | Rwx |
А теперь давайте рассмотрим различные комбинации Chmod в цифрах, применительно к группам пользователей:
«Права» | «„Владелец“» | «„Группа“» | «„Остальные“» |
777 | читать записывать исполнять | читать записывать исполнять | Читать записывать исполнять |
776 | читать записывать исполнять | читать записывать исполнять | Читать записывать |
775 | читать записывать исполнять | читать записывать исполнять | Читать исполнять |
774 | читать записывать исполнять | читать записывать исполнять | Читать |
766 | читать записывать исполнять | читать записывать | Читать записывать |
655 | читать записывать | читать исполнять | Читать исполнять |
644 | читать записывать | читать | Читать |
Вы сами (кроме того случая, когда вы получаете доступ к сайту по FTP ) и все остальные посетители вашего сайта, относитесь к группе “word” (все остальные), поэтому для работы с вебсайтом нам нужно в первую очередь смотреть на последнюю (третью) цифру Chmod. Для того чтобы при работе пользователя с сайтом «запускался файл» скрипта достаточно будет, чтобы на него были установлены права доступа (Chmod), начиная от «4» (r— – только чтение) (5,6,7 тоже подойдут, но это будет лишнее в плане безопасности).
«Для папки» же, в которой лежит файл этого скрипта, нужно выставить минимум «5» (r-x — можно зайти в папку и прочитать его содержимое, удалять или добавлять нельзя). 7 тоже подойдет, но тоже будет уже лишним в плане безопасности. Если нужно, чтобы скрипт не только читался, но и «записывал» какие-то данные (например, введенные пользователем), то минимальные права на «папку» по-прежнему будут «5», но для «файла» уже понадобятся права «6» (читать и записывать).
Скорей всего на сервере, куда вы скопировали содержимое движка вашего сайта, будут установлены следующие Chmod к объектам:
Папки 755
владелец (user) может всё, группа и все остальные могут только читать папки и заходить в них, но им запрещено записывать файлы, изменять названия и стирать их в директориях. (rwxr-xr-x)
Файлы 644
владелец (user) может читать и изменять файлы, исполнять ему их запрещено, всем остальным запрещено их изменять и исполнять, остальные могут только читать. «(rw-r—r—)»
Если бы у вас был сайт, состоящий из одних html, то можно было бы все так и оставить. Но современные сайты построены на движках, и там могут быть объекты, в которые нужно будет производить запись от имени пользователей из группы «world» — o (все остальные). Это могут быть папки, используемые для кэширования страниц или те, в которые по ходу работы с сайтом будут загружаться картинки и др. Само собой, что если вы зайдете на сайт по FTP , то сможете призвести запись в эти файлы или папки, но работая с интерфейсом вебсайта, как обычный пользователь, у вас могут возникнуть проблемы. Поэтому к установке тех или иных Chmod надо подходить избирательно:
755 | для всех папок, в которых должны записываться файлы, но не надо регулярно их стирать |
777 | для папок, в которые должны записываться и стираться файлы (например, для Кеша) |
644 | для простых файлов, используемых только для чтения (.html, .php и др.) |
666 | для файлы в которые может понадобится осуществлять запись (например, с базами данных .dat) |