Используя операционную систему семейства Linux не раз приходится сталкиваться с правами доступа. Порой при необходимости изменить или удалить какой-либо файл или папку, система выдаёт нам ошибку. Решить которую не составит много времени, если конечно владеешь нужными знаниями.
Переходя с Windows на Linux(Ubuntu) мне было не понятно, что означают эти символы, цифры. И как вообще получить эти права. Ведь в Windows такого рода проблемы, решаются гораздо проще, парочкой кликов в графической среде. А в Linux к сожаленью, может и к счастью, делается немного другим способом.
И вот ознакомившись с официальной документацией, прочитав парочку интересных публикаций. Решил написать данную статью, может кому-то будет полезной. Попробую всё объяснить максимально просто и понятно. Итак, изменяем права доступа командой chmod
в терминале.
Синтаксис команды chmod
.
chmod options mode file
Теперь разберём какое значение подставляется вместо options, mode, file.
options принимает следующие значения (можно его не использовать вообще)
- -R
- рекурсивное изменение прав (т.е. исполняется на данный каталог и всего его содержимого)
- -f
- запрет вывода ошибок для файлов, в случае, если права не были изменены
- -v
- подробно описывает изменения прав для каждого файла
mode – сюда прописываются какие именно права будут установлены, для всех типов пользователей. Сначала разберем по подробнее с пользователями. Система распределена на 3 типа пользователей.
- текущего пользователя – u сокращенно от user
- других пользователей, входящих в группу текущего пользователя – g т.е. group
- всех прочих пользователей – o т.е. other
У нас получилось ugo то есть user group other. Теперь для каждого типа пользователей определяем какие именно права будут установлены. Ознакомимся с использованием символьных команд.
- r
- (read) чтение файла или содержимого каталога
- w
- (write) запись в файл или в каталог
- x
- (execute) выполнение файла или его чтение
- X
- (special execute) выполнение, если файл является каталогом или уже имеет право на выполнение для другого пользователя
- s
- (setuid/gid) установленные атрибуты SUID или SGID позволяют запускать файл на выполнение с правами владельца файла или группы
- t
- (sticky) устанавливает некий t-бит на директорию, меняет правило таким образом, что удалить файл может только владелец этого файла
Для каждого типа пользователя используется три правила. Основные используемые правила – rwx.
И последнее из синтаксиса chmod:
file – название файла либо папки к которому выставляются данные права.
Итак, рассмотрим пример использования:
sudo chmod rwxr--r-- filename
Права выставляются по три правила трём пользователям.
Для текущего пользователя u выставлены все права – чтение, запись и выполнение. Для группы g и другим пользователям o разрешается только чтение, знак тире (-) означает никаких прав, получается запись и выполнение группе и другим пользователям мы не устанавливаем.
Рассмотрим пример с использованием папки с комментариями.
Было рассмотрено использование команды в символьном виде, а теперь рассмотрим в числовом виде.
В числовом виде файлу или каталогу устанавливаются абсолютные права. Ознакомьтесь с таблицей чуть ниже
Варианты записи прав пользователя.
восьмеричная | символьная | права |
0 | — | нет прав |
1 | –x | только выполнение |
2 | -w- | только запись |
3 | -wx | запись и выполнение |
4 | r– | только чтение |
5 | r-x | чтение и выполнение |
6 | rw- | чтение и запись |
7 | rwx | все права |
Из таблицы напрашивается вывод следующий: символьную запись в виде r– (только чтение) можно заменить одной лишь цифрой 2. Запись rw- (чтение и запись) цифрой 6. И так далее.
Установим полные права пользователю на файл, а группам и остальным пользователям разрешим только чтение этого файла. Следующие два правила совершенно идентичны.
sudo chmod rwxr--r-- file
sudo chmod 744 file
Для просмотра прав используется команда
sudo ls -l
Выводит список файлов и каталогов и информацию подробных прав пользователей.
В левой колонке – права доступа. Приставка – обозначает файл (файлы выделены), приставка d обозначает директория.
Значениями прав по умолчанию являются:
для файлов: 644 (-rw-r–r–)
для директорий: 755 (drwxr-xr-x)