Рассказываем, как настроить права доступа к файлам на сервере через SSH или с помощью FileZilla.
- Общая информация о правах доступа
- Просмотр установленных прав
- Настройка прав доступа
- По SSH
- По FTP/SFTP (FileZilla)
- Изменение владельца или группы файла
- Права доступа к файлам
- Права доступа к каталогам
- Кто выполняет действия над файлами
- Смотрим права файлов и каталогов
- Настраиваем права — chmod
- Числовые значения прав
- Смена владельца и группы владельцев — chown
- Рекурсивная смена прав и владельцев
- Understanding and Using File Permissions
- Folder/Directory Permissions
- Permissions in Action
- Changing Permissions
- Chmod with Numbers
- Chmod with sudo
- Recursive Permission Changes
- Recursive chmod with -R and sudo
- Recursive chmod using find, pipemill, and sudo
- Warning with Recursive chmod
- Changing the File Owner and Group
- Volume Permissions with umask
- Setting up ACL
- Example Usage
- Useful ACL Resources
- Sticky Bit
- See also
- Команда chmod
- Символьная форма прав доступа
- Числовая форма прав доступа
- Примеры
- Команда chown
- Команда chgroup
- Команды для управления правами на файлы и директории
- Команды для управления пользователями
- Базовые понятия прав доступа к файлам и папкам
- Привилегии для групп пользователей
- Чем отличаются права файлов и папок
- Базовые команды для работы с терминалом
- Флаг ограниченного удаления (или «Sticky Bit»)
- Как посмотреть разрешения файла
- Примеры использования chmod
- Запись прав доступа числом
- Запись прав доступа символами
- Рекурсивное изменение прав доступа
- Видео-обзор команды chmod
- Примеры команд Chmod в Linux
- Изменить разрешение на все файлы в каталоге рекурсивно
- Изменение прав доступа командой chmod
- Как изменить права доступа
- Мнемонические обозначения прав доступа
- Как установить права доступа 777 через SSH
- Никогда не используйте chmod 777
- Chmod + x или chmod a + x
- Только владелец может писать, читать и выполнять для всех
- Все только для владельца
- Никто не выполняет
- Каждый может читать, только владелец может писать
- Владелец может читать и писать, больше ни для кого
- Примеры команд chmod в символическом режиме
Общая информация о правах доступа
Система прав доступа в Linux позволяет разграничивать и гибко настраивать доступ пользователей к файлам и каталогам, повышая тем самым безопасность системы.
Полные права ко всему имеет только суперпользователь root (именно поэтому работать от root может быть небезопасно); остальные пользователи по умолчанию имеют доступ только к своему домашнему каталогу, а значит не могут выполнить каких-либо нежелательных изменений в системных файлах.
Права доступа включают в себя право на чтениеrзаписьwисполнениеx
Права назначаются как файлам, так и каталогам, и дают пользователям с этими правами следующие возможности:
три категории пользователей для каждого файла:
Для каждой категории может быть установлен свой набор прав к конкретному файлу.
Права могут обозначаться двумя способами: буквами или цифрами:
Права записываются последовательно: сначала для владельца, затем для группы, затем для остальных пользователей. Например, запись 755 (или rwx r-x r-x) означает, что владельцу даны права на чтение, запись и исполнение (7 / rwx), всем остальным — на чтение и исполнение (5 / r-x).
Примеры наиболее распространенных комбинаций для прав доступа:
Предоставляя доступ к каталогам, необходимо учитывать, что для полноценной работы с ними нужны, как минимум, права на чтение и исполнение (5 / r-x). Право на чтение (4 / r) будет означать только возможность просмотра имен файлов, без их атрибутов (размер, владелец и пр.).
Просмотр установленных прав
Просмотреть назначенные права для файлов в текущем каталоге можно командой ls -l
Права для файлов в выводе будут отмечены флагом -, для директории — флагом d в начале строки, например:
Параметры в выводе:
Если нужно просмотреть права только на конкретный файл или каталог в текущей директории, необходимо указать его имя. Например:
ls -l test.phpls -l dir5
Чтобы просмотреть права на файлы во всех вложенных подкаталогах в текущей директории, можно использовать флаг -R
Либо можно указать имя директории, права на файлы и подкаталоги в которой нужно просмотреть:
ls -Rl dir1
Настройка прав доступа
Изменять права доступа для файла может только его владелец или администратор системы (т.е. root или пользователь с привилегиями sudo).
Настройку прав доступа можно выполнять:
По SSH
Настраивать права доступа можно командой chmod. Существует два способа ее использования.
Способ 1, наиболее простой. При каждом изменении прав указывается весь набор прав для всех категорий пользователей. Права указываются в числовом формате.
chmod xxx имя_файла
Например, следующей командой можно установить для файла test.php права 755, т.е. полные права для владельца, права на чтение и исполнение для всех остальных.
chmod 755 test.php
Чтобы установить права 644 файлу test.php, необходимо выполнить:
chmod 644 test.php
Установить права 755 на каталог dir:
chmod 755 dir
В отдельных случаях может быть полезна опция -R, она позволяет назначать права рекурсивно. Будьте внимательны при ее использовании, так как она изменит права доступа для файлов во всех подкаталогах в текущем каталоге.
Указать права 755 всем объектам в текущем каталоге (включая подкаталоги):
chmod -R 755 *
Способ 2 позволяет указывать только конкретное изменение в правах для конкретной категории пользователей. Используется символьная запись прав.
chmod Категория Действие Права имя_файла
Категории пользователей имеют следующие обозначения:
Действия с правами включают в себя:
Праваrwx. При указании комбинаций (например, чтение и исполнение) здесь не нужно использовать дефис, т.е. указываем rx, а не r-x.
Например, следующей командой можно добавить права на чтение и исполнение для группы. Другие ранее установленные права никак не изменяются.
chmod g+rx test.php
Удалить для группы права на запись в файл test.php:
chmod g-w test.php
Удалить права на чтение и запись для остальных пользователей:
chmod o-rw test.php
Дать группе и остальным пользователям доступ к каталогу dir1 (права на чтение и исполнение):
chmod go+rx dir1
Дать группе и остальным пользователям право на чтение всех файлов и каталогов в директории (используется ключ -R):
chmod -R go+r new_directory
По FTP/SFTP (FileZilla)
Задавать и изменять права в FTP-клиенте очень просто.
Изменение владельца или группы файла
Чтобы изменить для файла или каталога группу или владельца, используется команда chown
chown владелец:группа имя_файла
Если одновременно надо изменить группу на customers, используем:
Чтобы изменить только группу:
chown :customers test.php
В этой статье изучим стандартные права доступа к файлам в Linux. Научимся одним пользователям давать доступ к файлам, а у других его забирать.
Права доступа к файлам
Debian или Ubuntu — это многопользовательские операционные системы, и у разных пользователей разные права. Например, один пользователь может читать и создавать одни файлы, а второй может делать тоже самое но с другими файлами, ну а третий пользователь сможет проделать это и с первыми и со вторыми файлами.
Помимо чтения и редактирования файлов, их возможно запускать, если это файлы программ или скрипты.
Получается, с файлами можно делать три стандартные действия: читать (r), редактировать (w), запускать (x). Это и есть стандартные права доступа к файлам в Linux.
Дополнительно, документацию для Debian по правам доступа, на английском языке, можете почитать тут.
Права доступа к каталогам
В Linux все является файлами и каталоги это тоже файлы, об этом я рассказывал в этой статье. С каталогами можно выполнять те же действия, что и с файлами:
Это стандартные права доступа к каталогам в Linux.
Кто выполняет действия над файлами
С возможными действиями над файлами и каталогами мы разобрались, теперь разберемся с теми, кто может эти действия совершать:
Таким образом получается такая система прав u=rwx / g=rwx / o=rwx. То-есть, что может делать с файлом его владелец, что может делать с файлом группа владельцев и что могут делать с файлом все остальные.
Смотрим права файлов и каталогов
Права файлов и каталогов можно посмотреть с помощью команды ls -l. Можно добавить опцию -d чтобы смотреть права каталога, не спускаясь в этот каталог. Команда ls показывает права таким образом rwxr-xr-x, первые три символа это права для владельца, следующие для группы, следующие для всех остальных.
Давайте, для примера, создадим каталог test и посмотрим какие права он получил в Debian и в Ubuntu:
Разница между Ubuntu и Debian в том что, по умолчанию, каталог в Ubuntu создается с такими правами rwxrwxr-x, а в Debian с такими rwxr-xr-x. Это означает что в Debian пользователи входящую в группу владельцев этого каталога не смогут ничего удалить или создать в этом каталоге, а в Ubuntu смогут.
А после прав, в выводе ls -l, идут Владелец файла и Группа владельцев (alex alex).
Права, владелец и группа владельцев в выводе ls
Создадим файлы в каталоге и посмотрим на их права:
Права на файлы в Ubuntu (rw-rw-r—) и в Debian (rw-r—r—) тоже немного отличаются. В Debian группа владельцев не может редактировать файл в отличии от Ubuntu.
Для назначения прав используют две утилиты:
Настраиваем права — chmod
Синтаксис этой команды такой:
Знак «+» добавляет право, знак «—» отнимает право, знак «=» устанавливает право для выбранной категории пользователей, убирая все остальные.
Командой chmod мы можем устанавливать права и отбирать их, я указал o-r, что означает у всех остальных (o) отнять (-) права на чтение (r).
Устанавливать права может либо владелец файла, либо пользователь root.
Теперь попробуем прочитать каталог под пользователем alex:
Вот несколько примеров работы с командой chmod:
$ chmod o-rwx #забрать права на чтение, запись и исполнение для всех остальных
$ chmod o+rwx #дать права на чтение, запись и исполнение для всех остальных
$ chmod g+rx #дать права для группы владельцев на чтение и исполнение
$ chmod a+r #всем дать право на чтение
$ chmod ug+rw #владельцу и группе дать право на чтение и запись
$ chmod o=x #всем остальным мы назначаем права на исполнение, rw удаляются если были
То есть мы вначале говорим кто (u или g или o или a), дальше указываем что сделать (— удалить право, + добавить право, = установить право), дальше указываем права (r или w или x, или их комбинации). При этом «+» отличается от «=» тем что, «+» добавляет право к уже имеющемся, а «=» заменяет.
Числовые значения прав
У прав есть числовые значения: r=4, w=2, x=1. Для удобства я подготовил следующую табличку:
Таблица соответствия числовых и символьных значений прав доступа
Используя chmod можно устанавливать права в числовых значениях, при этом нужно указывать сумму прав. Например права rw-r—r— в числовом формате будут такими 644, то есть мы сложили права для владельца (r+w=6), дальше для группы и для всех остальных (r=4).
Вот как назначают права в числовом виде:
Смена владельца и группы владельцев — chown
Теперь нужно разобраться, как менять владельцев у файлов, для этого нужно использовать утилиту chown. Владельца сможет сменить только суперпользователь.
Так как в Ubuntu не задан пароль для root пользователя я использую sudo чтобы переключиться на него. Это я уже разбирал в этом курсе.
Можно сменить только владельца а группу не менять:
А можно сменить только группу владельцев:
Рекурсивная смена прав и владельцев
Команды chmod и chown умеют работать рекурсивно, то есть изменять права на каталог, спуститься в этот каталог и изменить права на все файлы в нем, если в нем есть подкаталоги то пробежаться и по ним.
Для этого используется опция -R:
Understanding and Using File Permissions
To change or edit files that are owned by root, sudo must be used — please see RootSudo for details.
If the owner read & execute bit are on, then the permissions are:
There are three types of access restrictions:
Note: The restriction type scope is not inheritable: the file owner will be unaffected by restrictions set for his group or everybody else.
Folder/Directory Permissions
Directories have directory permissions. The directory permissions restrict different actions than with files or device nodes.
Folders (directories) must have ‘execute’ permissions set (x or 1), or folders (directories) will NOT FUNCTION as folders (directories) and WILL DISAPPEAR from view in the file browser (Nautilus).
Permissions in Action
What are the permissions from the above /etc/hosts ls output?
-rw-r—r—
owner = Read & Write (rw-)
group = Read (r—)
other = Read (r—)
Changing Permissions
Here are a few examples of chmod usage with letters (try these out on your system).
First create some empty files:
Add owner execute bit:
Add other write & execute bit:
Remove group read bit:
Add read, write and execute to everyone:
Chmod with Numbers
Owner, Group and Other is represented by three numbers. To get the value for the options determine the type of access needed for the file then add.
Here are a few examples of chmod usage with numbers (try these out on your system).
Chmod with sudo
Changing permissions on files that you do not have ownership of: (Note that changing permissions the wrong way on the wrong files can quickly mess up your system a great deal! Please be careful when using sudo!)
Recursive Permission Changes
To change the permissions of multiple files and directories with one command. Please note the warning in the chmod with sudo section and the Warning with Recursive chmod section.
Recursive chmod with -R and sudo
To change all the permissions of each file and folder under a specified directory at once, use sudo chmod with -R
Recursive chmod using find, pipemill, and sudo
To change permission of only files under a specified directory.
To change permission of only directories under a specified directory (including that directory):
Warning with Recursive chmod
WARNING: Although it’s been said, it’s worth mentioning in context of a gotcha typo. Please note, Recursively deleting or chown-ing files are extremely dangerous. You will not be the first, nor the last, person to add one too many spaces into the command. This example will hose your system:
Note the space between the first / and home.
You have been warned.
Changing the File Owner and Group
A file’s owner can be changed using the chown command. For example, to change the foobar file’s owner to tux:
To change the foobar file’s group to penguins, you could use either chgrp or chown with special syntax:
Finally, to change the foobar file’s owner to tux and the group to penguins with a single command, the syntax would be:
Note that, by default, you must use sudo to change a file’s owner or group.
Volume Permissions with umask
This section has been moved to: Fstab#Options
Posix ACLs are a way of achieving a finer granularity of permissions than is possible with the standard Unix file permissions. See the full page on ACLs FilePermissionsACLs
Setting up ACL
sudo apt-get install acl
sudo mount -o remount /home
The commands, setfacl and getfacl, set and read ACLs on files and directories.
Example Usage
The Eiciel package allows GUI access to ACLs through the Nautilus file manager.
Useful ACL Resources
To remove a file you cannot delete use
sudo rm -rf filename
where filename is the name and path of the file to delete.
Nota bene: Be very careful when using the command rm with the -rf option since -r makes the file removal recursive (meaning it will remove files inside of folders) and -f will force the removal even for files which aren’t writable. To play it safe, please consider typing in the absolute path to the file
sudo rm -rf /path/to/file/filename
to prevent any mishaps that can/will occur. It takes longer to type but you can’t put a price on peace of mind. See the rm man page for details.
Sticky Bit
To add or remove the sticky bit, use chmod with the «t» flag:
The status of the sticky bit is shown in the other execute field, when viewing the long output of ls. «t» or «T» in the other execute field indicates the sticky bit is set, anything else indicates it is not.
Making a public directory:
Adding the sticky bit (note the «t» in the other execute field):
See also
Поскольку Linux (да и UNIX вообще) — многопользовательская OS, в ней существует система прав доступа к файлам, служащая для защиты файлов каждого пользователя от влияния других пользователей системы.
Права доступа подразделяются на три типа:
Эти типы прав доступа могут быть предоставлены для трех классов пользователей:
Владельцем файла становится юзер, который создал этот файл. Короче говоря, для файла все юзеры делятся на 3 типа: хозяин, или владелец, юзеры, состоящие в одной группе с владельцем, и все остальные юзеры. Для каждого типа — свои права. Учтите, что директории и все системные устройства в UNIX являются обычными файлами. Тот же самый /dev/fd0 — это не сам Floppy disk, а всего лишь файл, связанный с флопповодом. Поэтому, если root запретил юзеру доступ к этому файлу, тот не сможет использовать флопповод (так же обстоят дела с модемами, хардами и т.п.). Владельцем всех системных файлов является root. Он же имеет право забирать файлы у одного юзера и передавать их другому (менять владельца).
Команда chmod
Изменить права доступа к файлу может либо его владелец, либо сам root. Делается это командой chmod. Существует две формы представления прав доступа: символьная и цифровая.
Символьная форма прав доступа
drwxrwxrwx — директория, к которой все имеют любые права доступа.
-rwxr—r— — обычный файл, владелец может делать все, а остальные — только читать.
-r——— — обычный файл, который владелец может только читать, а остальные пользователи не видят.
Но многие пользователи хотят держать других подальше от своих файлов. Установив права доступа файла -rw——-, вы никому не покажете этот файл и не дадите записать в него. Также хорошо закрывает файлы защита соответствующего каталога drwx——.
С правами доступа в символьной форме chmod работает так:
Числовая форма прав доступа
Теперь права доступа в числовой форме. Для некоторых эта форма может показаться более простой. Надо запомнить только следующее:
Теперь осталось только просуммировать числа, соответствующие тем правам доступа, которые мы хотим поставить файлу.
Примеры
chmod a+r stuff
Дает всем пользователям право читать файл stuff.
chmod +r stuff
То же самое, что и ранее (a — по умолчанию).
chmod og-x stuff
Лишает права на выполнение всех, кроме владельца.
chmod u+rwx stuff
Разрешает владельцу все (read, write и execute).
chmod o-rwx stuff
Запрещает все (read, write и execute) пользователям категории другие (other).
=== Числовая форма===
chmod 744 stuff
chmod 444 stuff
все имеют право только на чтение.
chmod 611 stuff
владелец может читать и выполнять, остальные — только выполнять.
chmod 755 script
Классическая команда. Скрипт — это исполняемый файл, и все должны иметь к нему доступ на чтение и выполнение. Только владелец этого файла может его изменять или удалять.
Команда chown
Изменение владельца файла осуществляется командой chown, например:
Для передачи каталога надо вводить:
Команда chgroup
Изменение группы, которой принадлежит файл.
Valery V. Kachurov
Команды для управления правами на файлы и директории
Все, что нужно для разрешения проблем, связанных с правами в Linux.
sudo gksudo название приложения, нуждающееся в запуске от имени администратора
chown имя учетной записи, которому надо передать правапуть до файла, права на который нужно передать
Команды для управления пользователями
Linux — многопользовательская система. Ей одновременно могут управлять несколько людей. Поэтому здесь достаточно сложная система добавления и редактирования учетных записей.
Базовые понятия прав доступа к файлам и папкам
Если же все пустить это дело на самотек и не заморачиваться с установкой нужных привилегий, то вероятность взлома вашего ресурса или заражения его вредоносным кодом будет очень велика. Хорошо, если вы осуществляли резервное копирование (бэкап) всех ваших данных, а если нет?!
Поэтому лучше сразу же, не откладывая в долгий ящик, произвести настройку и изменение Чмод для всех важных объектов вашего движка, исходя из принципа минимализма. Т.е. давать объектам минимально необходимые для корректной работы вебсайта права.
Давайте сначала разберемся в сути вопроса, чтобы понимать, что именно и каким образом мы настраиваем. Итак, приступим. Права доступа разделяются по отношению к файлам и к директориям. Обозначаются они одинаково, но означают немного разное.
В свою очередь, по отношению к файлам возможно:
Остановимся чуть подробнее на возможности исполнения файла. Дело в том, что в linux любой файлик может быть исполнен. Является ли он исполнительным — определяется не по его расширению (понятие расширение отсутствует в файловой системе Unix), а по правам доступа Chmod. Если у какого-либо файлика установлено право на исполнение “X”, то это означает, что его можно запустить на выполнение.
По отношению к директориям возможно:
В системах Линукс все это раздает главный администратор компьютера, доступ к которому он получает путем ввода пароля. И если большинство объектов будут иметь права только для чтения, то вирусам на таком компьютере делать будет практически нечего, т.к. они не смогут себя туда ни записать, ни затем исполниться. Именно этого результата нам нужно добиться, выставляя нужные Chmod на объекты нашего сайта.
Привилегии для групп пользователей
Сами привилегии подразделяются на три категории в зависимости от того, кто обращается к объекту:
Прочие пользователи, которые тоже подключаются по FTP к серверу, будут отнесены к группе «group» («g»), а посетитель, который приходит к вам на вебсайт, используя свой браузер, попадает в группу «world» («o»).
Вариации трех возможных значений «r», «w» и «x» для трех категорий «u», «g» и «o» и определяют Chmod к файлам. Если не задана какая-то категория, то она заменяется знаком дефисом «-». Привилегии указываются последовательно в заданном порядке:
После того, как сервер отнесет посетителя к определенной группе, он предоставляет ему права на действия с объектами, после чего посетитель сможет прочитать, записать или выполнить файл (в зависимости от того, что разрешено делать с данным объектом его группе).
Чтобы посмотреть содержимое каталога, он должен иметь атрибут чтения «r» (для той группы, к которой сервер отнес посетителя). Чтобы создать файлик или папку в уже существующей необходимо, чтобы этот существующий каталог имел атрибут на запись «w».
Рассмотрим ее в деталях: «rwx» (эта запись задает права на объект для владельца — «u»), «r–» (эта запись задает права на тот же объект, но в случае, если посетитель отнесен сервером к группе — «g»), «r–» (эта запись задает привилегии на объект для всех остальных пользователей — «o»).
Чем отличаются права файлов и папок
Получается, что существует три группы пользователей и три возможных действия с объектами. Еще не запутались? Разложим все сказанное выше по полочкам в виде табличек. Сначала наглядно посмотрим, чем они отличаются:
А так же табличка, показывающая разнообразные комбинации Chmod для разных типов объектов:
Базовые команды для работы с терминалом
То, что поможет при работе с консолью в целом.
Эта команда имеет типичный для команд linux синтаксис, сначала команда, затем опции, а в конце файл или папка, к которой ее нужно применить:
Также есть три категории пользователей, для которых вы можете установить эти права на файл linux:
Синтаксис настройки прав такой:
В качестве действий могут использоваться знаки “+” – включить или “-“ – отключить. Рассмотрим несколько примеров:
Но права можно записывать не только таким способом. Есть еще восьмеричный формат записи, он более сложен для понимания, но пишется короче и проще. Я не буду рассказывать как считать эти цифры, просто запомните какая цифра за что отвечает, так проще:
Права на папку linux такие же, как и для файла. Во время установки прав сначала укажите цифру прав для владельца, затем для группы, а потом для остальных. Например, :
Каждая из цифр не зависит от предыдущих, вы вбираете именно то, что вам нужно. Теперь давайте рассмотрим несколько опций команды, которые нам понадобятся во время работы:
Теперь, когда вы знаете опции и как настраиваются права доступа chmod, давайте рассмотрим несколько примеров как работает команда chmod linux.
-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 игнорирует символические ссылки, встречающиеся во время рекурсивных обходов каталогов.
Флаг ограниченного удаления (или «Sticky Bit»)
Ограниченный флаг удаления или закрепленный бит – это один бит, интерпретация которого зависит от типа файла. Это предотвращает удаление или переименование файла в каталоге пользователям, которые не владеют файлом или каталогом; это называется флагом ограниченного удаления для каталога и обычно встречается в каталогах, доступных для записи во всем мире, таких как / tmp. Для обычных файлов в некоторых старых системах этот бит сохраняет текстовое изображение программы на устройстве подкачки, поэтому при запуске он загружается быстрее; это называется липким битом.
Как посмотреть разрешения файла
Быстрый и простой способ составить список прав доступа к файлу с помощью опции длинного списка (-l) команды ls. Например, чтобы просмотреть разрешения для file.txt, вы можете использовать команду:
ls -l file.txt
Примеры использования chmod
Я не буду приводить много примеров, так как там и так все более-менее понятно после пояснения правил создания выражений установки прав. Сначала самый частый случай – разрешить выполнения скрипта владельцу:
chmod u+x file
Или можно воспользоваться цифровой записью:
chmod 766 filels – l file
Недостаток цифровой записи в том, что вы не можете модифицировать уже существующие права доступа linux. Например, в первом варианте вы просто добавили флаг выполнения для владельца файла, а все остальные права оставили неизменными. В восьмеричном варианте мы полностью заменили текущие права новыми – все для владельца и чтение/запись для группы и остальных. Как видите, права установлены как и ожидалось. Теперь отключим выполнение владельцем:
chmod u-x file
И снова проверяем:
Дальше разрешим только чтение всем, кроме владельца:
chmod 744 filels -l file
Или отберем все права:
chmod ugo-rwx file
Файлы с правами 000 недоступны никаким пользователям, кроме суперпользователя и владельца. Вернем права обратно:
chmod 755 filels -l file
Такая же ситуация с файлами, владельцем которых вы не являетесь, если вы хотите изменить их права – используйте sudo. Из модификаторов прав вы можете конструировать любые последовательности, я думаю тут нет смысла разбирать их все. Для того чтобы поменять права на все файлы в папке используйте опцию -R:
chmod -R ug+rw dirls -l dir/
Также вы можете смотреть подробную информацию про вносимые изменения, например:
chmod -Rv ug+rw dir
chown – Изменить владельца файлов или каталогов.getfacl – Показать списки контроля доступа к файлам.ls – список содержимого каталога или каталогов.
Запись прав доступа числом
chmod 764 myfile
В данном формате права доступа задаются не символами rwx, как описано выше, а трехзначным числом. Каждая цифра числа означает определенный набор прав доступа.
В таблице ниже приводятся все возможные комбинации разрешений rwx и соответсвующие им числа (которые используются в команде chmod):
Рассмотрим использование команды chmod с записью прав доступа числом на примере. Установим для файла права доступа 764:
Это означает (см. таблицу выше), что для файла myfile мы устанавливаем права доступа 764, которые означают:
Если записать 764 с помощью символов (см. таблицу), то мы получим: «rwxrw-r-».
В таблице ниже приведены некоторые часто используемые значения числовых значений прав доступа:
Запись прав доступа символами
chmod +x myfile1
chmod g=rw myfile2
chmod u-w myfile3
Как вы можете видеть, в данном формате права доступа задаются символами rwx, но в синтаксисе используются и другие вспомогательные символы, например, математические операции «+» и «-» и такие символы как, например, «g» или «u».
Общий синтаксис можно записать примерно так:
chmod (владелец)(математическая операция)(разрешения) имя_файла
Обозначения для владельцев файла следующие:
Математические операции означают следующее:
В одной команде можно перечислять владельцев и их разрешения через запятую (см. пример ниже).
Рекурсивное изменение прав доступа
Если необходимо изменить права доступа на все файлы в директории, включая вложенные директории, то для этого существует опция -R, что означает рекурсивное изменение прав доступа для директорий и их содержимого. Например, изменим права доступа у всех файлов в директории Mydir:
chmod -R 644 Mydir
И еще один момент. Если пользователь не является владельцем файла, но ему нужно изменить права доступа у данного файла, то команду chmod необходимо выполнять с использованием sudo, например:
sudo chmod 644 file
Видео-обзор команды chmod
Примеры команд Chmod в Linux
Использование команды chmod очень просто, если вы знаете, какие права доступа вы должны установить для файла.
Например, если вы хотите, чтобы владелец имел все разрешения и не имел разрешений для группы и публики, вам нужно установить разрешение 700 в абсолютном режиме:
chmod 700 filename
Вы можете сделать то же самое в символическом режиме.
chmod u=rwx filename
Если вам нужен простой способ узнать разрешение файла Linux в числовом или символьном режиме, вы можете использовать этот калькулятор chmod. Просто выберите соответствующие разрешения, и они сообщат вам разрешения как в абсолютном, так и в символическом режиме.
Изменить разрешение на все файлы в каталоге рекурсивно
У chmod есть рекурсивная опция, которая позволяет вам изменять права доступа ко всем файлам в каталоге и его подкаталогах.
chmod -R 755 directory
Изменение прав доступа командой chmod
Возможно, вы слышали о chmod 777. Эта команда предоставит права на чтение, запись и выполнение владельцу, группе и общедоступным.
Если вы хотите изменить режим на 777, вы можете использовать следующую команду:
chmod 777 filename
chmod 777 считается потенциально опасным, поскольку вы даете разрешение на чтение, запись и выполнение файла/каталога всем (кто находится в вашей системе). Вы должны полностью избежать этого.
Как изменить права доступа
Команда chmod может изменить режим пользовательского доступа к файлу. Как-либо менять эти права разрешено исключительно его владельцу либо суперпользователю. В Unix-системах код принято задавать в виде числа в восьмеричной форме, или при помощи специальных мнемонических знаков (букв). Использование каждого способа имеет свои преимущества и недостатки. Так, с помощью цифрового указания прав доступа системный администратор сможет быстрее настроить нужный тип доступа, а с помощью мнемонических кодов он сможет сделать это более точно – например, добавить или удалить право на запись, либо запретить право на чтение.
В качестве первого аргумента консольной команды chmod выступает спецификация пользовательских прав доступа, а это есть мнемоническое обозначение, или восьмеричное число. Второй и следующий аргументы это названия файлов, к которым мы пытаемся изменить права доступа. При установке прав в виде трех чисел, первая цифра определяет права для владельца, 2-ая для группы, и третья для всех остальных юзеров.
Мнемонические обозначения прав доступа
Доступ к файлам в системе прав имеет такие вариации:
По отношению к каталогам действует такия система прав:
Всего возможно 8 различных комбинаций, которые приведены на рисунке ниже.
С помощью таблицы ниже вы сможете понять, как реализовать сложные варианты назначения прав, а также как установить права доступа 777, используя мнемонические спецификации chmod.
Как установить права доступа 777 через SSH
Приведем некоторые примеры использование команды chmod:
Использование такого сценария распределения файлов приведет к тому, что у владельца будут все права на файл, а все остальные группы пользователей смогут только выполнять его.
При использования кода 775 мы предоставим владельцу и всей его группе полный перечень прав. Остальные же пользователи не смогут выполнять изменения в файле. Нужно сказать, что для указания файла только по его собственному имени, необходимо находится в директории, где расположен этот файл. В ином случае вы можете переместиться в эту директорию командой cd имя_директории/имя_вложеной_директории или использовать следующую структуру:
Чтобы рекурсивно изменить права ко всем файлам в каталоге и всем вложенным папкам, нужно добавить ключ -R к команде chmod. Полученная команда будет выглядеть так:
Никогда не используйте chmod 777
Установка 777 разрешений для файла или каталога означает, что он будет доступен для чтения, записи и выполнения всеми пользователями и может представлять огромную угрозу безопасности.
Например, если вы рекурсивно измените разрешения всех файлов и подкаталогов в каталоге /var/www на 777, любой пользователь в системе сможет создавать, удалять или изменять файлы в этом каталоге.
Если у вас возникают проблемы с правами доступа к веб-серверу, вместо рекурсивной установки разрешения 777, измените владельца файла на пользователя, запустившего приложение, и установите права доступа к файлу и разрешения для каталога с 644 на 755.
Владелец файла может быть изменен с помощью chownкоманды и разрешений с командой chmod.
Допустим, на вашем сервере есть приложение PHP, работающее от имени пользователя «andreyex». Чтобы установить правильные разрешения, вы должны запустить:
Только root, владелец файла или пользователь с правами sudo могут изменять права доступа к файлу. Будьте особенно осторожны при использовании chmod, особенно при рекурсивном изменении разрешений.
Chmod + x или chmod a + x
Вероятно, один из наиболее часто используемых случаев chmod – дать файлу бит выполнения. Часто после загрузки исполняемого файла вам необходимо добавить это разрешение перед его использованием. Чтобы дать владельцу, группе и всем остальным разрешение на выполнение файла:
chmod +x /path/to/file
Только владелец может писать, читать и выполнять для всех
Эта следующая команда установит следующее разрешение для файла: rwxr-xr-x. Только владельцу будет разрешено писать в файл. Владелец, члены группы и все остальные будут иметь разрешение на чтение и выполнение.
chmod 755 /path/to/file
Все только для владельца
Эта команда предоставит владельцу права на чтение, запись и выполнение. Группа и другие не будут иметь никаких разрешений, даже читать.
chmod 700 /path/to/file
Никто не выполняет
Чтобы дать владельцу, группе и всем остальным права на чтение и запись в файл.
chmod -c 666 /path/to/file
Каждый может читать, только владелец может писать
С этим следующим, владелец будет иметь право на чтение и запись, в то время как группа и все остальные имеют разрешение на чтение.
chmod 644 /path/to/file
Владелец может читать и писать, больше ни для кого
С этим следующим, владелец будет читать и писать, в то время как группа и все остальные не будут иметь никаких разрешений вообще.
chmod 600 /path/to/file
Примеры команд chmod в символическом режиме
В приведенных выше примерах мы использем битовую маску для установки нового РЕЖИМА. Это легко рассчитать. Требуется простое дополнение. Учтите следующее:
- X = 1
- W = 2
- R = 4
Теперь вы можете легко увидеть, откуда у нас 755, 666, 640 . Вам не нужно использовать битовую маску для установки нового разрешения. Доступен более читабельный способ. Этот второй формат выглядит так:
Хотя это может показаться сложным, это довольно просто. Сначала вы набираете chmod и нужные вам ОПЦИИ. Затем спросите себя: для кого я меняю права доступа? Пользователь, Группа, Другие. Это даст вам первый раздел команды:
На следующем шаге для завершения команды вы решаете добавить биты прав доступа (+), удалить права доступа (-) или установить разрешение (
. Последнее добавит или удалит разрешения по мере необходимости, чтобы установить разрешение по вашему запросу.
chmod -v u+
В следующем разделе вы решаете РЕЖИМ разрешения применить (+), удалить (-) или сопоставить (
. Вы можете указать любую комбинацию RWX.
chmod -v u+rw
В следующем примере будет применено разрешение на чтение/запись для файла для владельца. Подробная опция заставит chmod сообщать о действии.
chmod -v u+rw /path/to/file
Следующим будет установлено разрешение на запись группы в каталог и все его содержимое рекурсивно. Он будет сообщать только об изменениях.
chmod -cR g+w /path/to/directory
Вы можете объединить несколько операций, которые будут выполнены с разрешения, как в следующем примере. Он убедится, что владелец имеет права на чтение/запись/выполнение, а также добавит разрешение на запись для группы и удалит выполнение для всех остальных:
chmod u=rwx,g+w,o-x /path/to/file
Этот последний будет использовать rFile в качестве ссылки для установки разрешения на файл . После завершения разрешение файла будет точно таким же, как и для rFile.
chmod –reference=/path/to/rFile /path/to/file
Есть больше опций и режимов, которые можно использовать с chmod, которые не описаны или не упомянуты здесь. Мы хотели сохранить это в общих чертах и, надеюсь, помочь нескольким новым пользователям Linux.