Содержание
Примеры использования команды chmod в символьном режиме
Права:
Добавить | Забрать |
+r | -r |
+w | -w |
+x | -x |
(Изначальное значение прав доступа файла file — rwxrwxrwx – полный доступ для всех) Отмена разрешения на выполнение файла для всех пользователей и групп:
Отмена записи в файл группой и остальными пользователями:
Разрешение выполнения файла владельцем:
Предоставление группе тех прав доступа, которыми владеет владелец файла:
Отмена чтения и запись в файл пользователям группы и другим пользователям:
Примеры использования команды chmod в абсолютном режиме
Разрешение чтения, записи, выполнения файла file всеми пользователями и группами (полный доступ):
Установка разрешений на чтение и запись для владельца, группы и остальных пользователей:
Установка полного доступа к файлу для владельца и лишь чтения для группы и остальных пользователей:
Установка полного доступа к файлу владельцу файла и запрет доступа группе и другим пользователям:
Установка разрешений на чтение и запись для владельца файла и лишь чтения для группы и остальных:
Установка разрешений на чтение и запись владельцу файлу и его группе и запрет доступа для других:
Установка доступа к файлу с разрешением чтения для всех пользователей и групп:
Права доступа к файлу для чтения, записи, выполнения владельцем и чтения, выполнения группе и другим:
Разрешение доступа к файлу на чтение и выполнение пользователю и остальным и запрет доступа для группы:
Если вы хотите назначить права доступа на все файлы в текущем каталоге, просто поставьте после назначаемых прав доступа знак * (звездочка):
В результате выполнения этой команды владелец получит полные права (чтение, изменение, выполнение) на все файлы текущего каталога, а группа и другие пользователи – только чтение и выполнение. Если вы хотите, чтобы ваши действия распространились рекурсивно (включая все подкаталоги), воспользуйтесь опцией -R:
Результатом выполнения вышеприведенной команды будет рекурсивный “обход” всех подкаталогов текущего каталога и назначение полного доступа для всех пользователей и групп. В этой статье рассмотрены лишь некоторые примеры применения команды chmod. Если вы хотите узнать подробнее о работе команды chmod и правах доступа в Linux, обратите внимание на эту статью.
Разработанный ещё в 70-е годы прошлого века механизм распределения прав в операционных системах оказался настолько успешным, что используется в UNIX-системах до сих пор, то есть уже больше сорока лет.
Права доступа 777 — что это?
Базовый принцип способа распределения доступа включает в себя существование обязательных атрибутов, таких как имена пользователей системы, а также их групп. Почти очевидным является тот факт, что в Linux у каждого юзера может быть только одно имя, которое должно быть уникально в рамках этой системы. С помощью никнейма пользователь входит в систему, то есть проходит авторизацию. Помимо этого, операционка содержит конечное число групп пользователей. Каждый из них может входить в состав одной или нескольких групп. Редактировать свойства, создавать и удалять группы может суперпользовать — root. Участники различных групп имеют различные права для действий в системе. Так, например, администратор владеет большими правами, чем гость.
Индексный дескриптор (который есть у каждого файла) содержит логин владельца и название группы пользователей, имеющей права к данному файлу.
При создании файла его владельцем становится пользователь, от имени которого запущен этот процесс. Группа новосозданного файла так же определяется с помощью идентификатора группы действующего процесса. При дальнейшей работе все эти значения можно изменить при помощи команд консоли, о которых далее пойдет речь.
Как изменить права доступа
Команда chmod может изменить режим пользовательского доступа к файлу. Как-либо менять эти права разрешено исключительно его владельцу либо суперпользователю. В Unix-системах код принято задавать в виде числа в восьмеричной форме, или при помощи специальных мнемонических знаков (букв). Использование каждого способа имеет свои преимущества и недостатки. Так, с помощью цифрового указания прав доступа системный администратор сможет быстрее настроить нужный тип доступа, а с помощью мнемонических кодов он сможет сделать это более точно — например, добавить или удалить право на запись, либо запретить право на чтение.
В качестве первого аргумента консольной команды chmod выступает спецификация пользовательских прав доступа, а это есть мнемоническое обозначение, или восьмеричное число. Второй и следующий аргументы это названия файлов, к которым мы пытаемся изменить права доступа. При установке прав в виде трех чисел, первая цифра определяет права для владельца, 2-ая для группы, и третья для всех остальных юзеров.
Мнемонические обозначения прав доступа
Доступ к файлам в системе прав имеет такие вариации:
- r — доступ к чтению файла;
- w — право редактирование данных (но не удаление);
- x — возможость запускать файл к исполнению.
По отношению к каталогам действует такия система прав:
- r — пользователь может читать любые файлы директории;
- w — с этими правами можно создавать и удалять файлы в папке, даже если некоторые из них в каталоге принадлежат другому юзеру;
- x — обозначает право входа в директорию. Если вы имеете права w к вложеной папке но не имеете прав на папку уровнем выше, то и к своей папке никак не пробьетесь.
Всего возможно 8 различных комбинаций, которые приведены на рисунке ниже.
С помощью таблицы ниже вы сможете понять, как реализовать сложные варианты назначения прав, а также как установить права доступа 777, используя мнемонические спецификации chmod.
Как установить права доступа 777 через SSH
Приведем некоторые примеры использование команды chmod:
Использование такого сценария распределения файлов приведет к тому, что у владельца будут все права на файл, а все остальные группы пользователей смогут только выполнять его.
При использования кода 775 мы предоставим владельцу и всей его группе полный перечень прав. Остальные же пользователи не смогут выполнять изменения в файле. Нужно сказать, что для указания файла только по его собственному имени, необходимо находится в директории, где расположен этот файл. В ином случае вы можете переместиться в эту директорию командой cd имя_директории/имя_вложеной_директории или использовать следующую структуру:
- chmod 775 /var/bin/file_name.txt.
Чтобы рекурсивно изменить права ко всем файлам в каталоге и всем вложенным папкам, нужно добавить ключ -R к команде chmod. Полученная команда будет выглядеть так:
В итоге, как выставить права доступа 777 для файла или каталога, не будет проблемой — просто необходимо залогиниться на вашем веб-сервере через SSH и выполнить команду:
Как установить права доступа 777 в контрольной панели сервера
Вы также можете реализовать аналогичную процедуру через визуальный интерфейс FTP клиента FileZilla или SFTP клиента WinSCP. Для этого необходимо будет выполнить авторизацию на вашем сервере в одной из этих программ, в визуальном интерфейсе выбрать ваш файл или папку, затем нажать правую клавишу мыши и установить галочки рядом с нужными правами.
Система полномочий в Linux имеет очень важное значение, поскольку благодаря ей можно разделять привилегии между пользователями, ограничить доступ к нежелательным файлам или возможностям, контролировать доступные действия для сервисов и многое другое. В Linux существует всего три вида прав — право на чтение, запись и выполнение, а также три категории пользователей, к которым они могут применяться — владелец файла, группа файла и все остальные.
Эти права применяются для каждого файла, а поскольку все в системе Linux, даже устройства, считаются файлами, то, получается что эти права применимы ко всему. Мы более подробно рассматривали как работают права доступа к файлам Linux в отдельной статье, а этой, я хочу остановиться на команде chmod, которая используется для установки прав.
Команда chmod Linux
Эта команда имеет типичный для команд linux синтаксис, сначала команда, затем опции, а в конце файл или папка, к которой ее нужно применить:
$ chmod опции права /путь/к/файлу
Сначала рассмотрим какими бывают права доступа linux и как они устанавливаются. Пред этим рекомендую прочитать статью про права, ссылка на которую есть выше. Есть три основных вида прав:
- r — чтение;
- w — запись;
- x — выполнение;
- s — выполнение от имени суперпользователя (дополнительный);
Также есть три категории пользователей, для которых вы можете установить эти права на файл linux:
- u — владелец файла;
- g — группа файла;
- o — все остальные пользователи;
Синтаксис настройки прав такой:
группа_пользователей действие в ид_прав
В качестве действий могут использоваться знаки "+" — включить или "-" — отключить. Рассмотрим несколько примеров:
- u+x — разрешить выполнение для владельца;
- ugo+x — разрешить выполнение для всех;
- ug+w — разрешить запись для владельца и группы;
- o-x — запретить выполнение для остальных пользователей;
- ugo+rwx — разрешить все для всех;
Но права можно записывать не только таким способом. Есть еще восьмеричный формат записи, он более сложен для понимания, но пишется короче и проще. Я не буду рассказывать как считать эти цифры, просто запомните какая цифра за что отвечает, так проще:
- — никаких прав;
- 1 — только выполнение;
- 2 — только запись;
- 3 — выполнение и запись;
- 4 — только чтение;
- 5 — чтение и выполнение;
- 6 — чтение и запись;
- 7 — чтение запись и выполнение.
Права на папку linux такие же, как и для файла. Во время установки прав сначала укажите цифру прав для владельца, затем для группы, а потом для остальных. Например, :
- 744 — разрешить все для владельца, а остальным только чтение;
- 755 — все для владельца, остальным только чтение и выполнение;
- 764 — все для владельца, чтение и запись для группы, и только чтение для остальных;
- 777 — всем разрешено все.
Каждая из цифр не зависит от предыдущих, вы вбираете именно то, что вам нужно. Теперь давайте рассмотрим несколько опций команды, которые нам понадобятся во время работы:
- -c — выводить информацию обо всех изменениях;
- -f — не выводить сообщения об ошибках;
- -v — выводить максимум информации;
- —preserve-root — не выполнять рекурсивные операции для корня "/";
- —reference — взять маску прав из указанного файла;
- -R — включить поддержку рекурсии;
- —version — вывести версию утилиты;
Теперь, когда вы знаете опции и как настраиваются права доступа chmod, давайте рассмотрим несколько примеров как работает команда chmod linux.
Примеры использования chmod
Я не буду приводить много примеров, так как там и так все более-менее понятно после пояснения правил создания выражений установки прав. Сначала самый частый случай — разрешить выполнения скрипта владельцу:
Или можно воспользоваться цифровой записью:
chmod 766 file
ls — l file
Недостаток цифровой записи в том, что вы не можете модифицировать уже существующие права доступа linux. Например, в первом варианте вы просто добавили флаг выполнения для владельца файла, а все остальные права оставили неизменными. В восьмеричном варианте мы полностью заменили текущие права новыми — все для владельца и чтение/запись для группы и остальных. Как видите, права установлены как и ожидалось. Теперь отключим выполнение владельцем:
И снова проверяем:
Дальше разрешим только чтение всем, кроме владельца:
chmod 744 file
ls -l file
Или отберем все права:
chmod ugo-rwx file
Файлы с правами 000 недоступны никаким пользователям, кроме суперпользователя и владельца. Вернем права обратно:
chmod 755 file
ls -l file
Такая же ситуация с файлами, владельцем которых вы не являетесь, если вы хотите изменить их права — используйте sudo. Из модификаторов прав вы можете конструировать любые последовательности, я думаю тут нет смысла разбирать их все. Для того чтобы поменять права на все файлы в папке используйте опцию -R:
chmod -R ug+rw dir
ls -l dir/
Также вы можете смотреть подробную информацию про вносимые изменения, например:
chmod -Rv ug+rw dir
Выводы
В этой небольшой статье была рассмотрена команда chmod linux. Она очень часто используется наряду с такими командами, как chown и umask для управления правами. Надеюсь, эта информация была полезной для вас. Если у вас остались вопросы, спрашивайте в комментариях!