Изменение Прав Доступа к Файлам и Папка в Linux — Основы Chmod

Команда сhmod (change mode) служит для изменения прав доступа к файлам и папкам.

Синтаксис

Команды chmod имеет следующий синтаксис:

$ chmod [options] permissions file[s]

Опции :

  • -R, —recursive; изменять файлы и директории рекурсивно
  • -f, —silent, —quiet; не выводить сообщения об ошибках

Показать текущие права на файл / директорию можно с помощью команды ls:

$  ls -l MyFile.txt
-rw-r--r-- 1 john admin 0 2012-12-02 04:30 MyFile.txt
$ ls -ld MyDir
drwxr-xr-x 2 john admin 4096 2012-12-02 04:29 MyDir

или используя команду stat:

$  stat -c '%A %a %n' MyFile.txt
-rw-r--r-- 644 MyFile.txt
$ stat -c '%A %a %n' MyDir
drwxr-xr-x 755 MyDir

Классы доступа

Классы доступа используются для того, чтобы определить какому пользователю назначаются права. Если класс доступа не указан, то по умолчанию используется класс “all”. Классы доступа представлены одной или несколькими из ниже перечисленных букв:

Класс Class Описание
u user владелец файла (папки)
g group пользователи, которые являются членами группы к которой принадлежит файл (папка)
o others пользователи, которые не являются ни владельцем файла (папки), ни входят в группу файла (папки)
a all все три перечисленных выше класса, то же самое что ugo

Операторы

Программа chmod использует оператор для того, чтобы указать каким образом будут применены права доступа к файлам или папкам. Приняты следующие операторы:

Оператор Описание
+ добавить указанные права доступа к указанному классу
убрать указанные права доступа из указанного класса
= присвоить указанные права доступа

Права доступа

Права доступа указывают какие полномочия следует предоставить или забрать у указанного класса. Существуют три основных вида прав доступа, которые соответствуют базовым полномочиям:

Права доступа Name Описание
r read права на чтение содержимого файла или директорию (просматривать файлы и поддиректории в папке)
w write права на запись в файл или директорию (создавать файлы и поддиректории в папке)
x execute права на исполнение файла в качестве программы/скрипта либо права на вход в директорию (просмотр дерева каталога)
X special execute права на вход в директорию и права на исполнение файла, в случае, если хотя бы одному классу уже назначено право на исполнение (для любого из user, group или other)

[X] сам по себе не является правом доступа, но тем не менее, может использоваться вместо x. Он на самом деле полезен только в случае использования оператора ‘+’ в сочетании с опцией -R, для того чтобы предоставить группе или остальным пользователям права доступа к дереву каталога, не давая прав на исполнение обычных файлов (например текстовых), что случится при применении команды ‘chmod -R a+rx’. Таким образом вместо нее можно использовать ‘X’, и соответственно выполнить ‘chmod -R a+rX’.

Числовые права доступа

Возможно использование прав доступа как в символьной, так и в числовой форме.

Числовая форма для прав доступа:

  • Первая цифра используется для обозначения user (пользователь)
  • Вторая цифра используется для обозначения group (группа)
  • Третья цифра используется для обозначения others (остальные)
# Права Описание
7 rwx чтение, запись, исполнение
6 rw- чтение, запись
5 r-x чтение, запись
4 r— чтение 3 -wx запись, исполнение
2 -w- запись
1 —x исполнение
0 нет прав

10 Простых Примеров:

1. Добавить всем права на чтение файла:

$ chmod a+r file

2. Забрать права на исполнение файла у всех:

$ chmod a-x file

3. Добавить всем права на чтение и запись:

$ chmod a+rw file

4. Установить права на чтение и запись для владельца и забрать права у всех остальных:

$ chmod u=rw,go= file

5. Для директории и всего ее содержимого добавить права на запись для владельца, и забрать права на запись для всех остальных:

$ chmod -R u+w,go-w directory

6. Забрать у всех все права:

$ chmod file

7. Дать всем права на права на чтение, запись и выполнение файла:

$ chmod 777 file

8. Задать права на чтение и запись без права на исполнение для владельца и группы, а все остальным дать право только на чтение:

$ chmod 664 file

9. Назначить права ‘-rwx’ для владельцев директорий, добавить права ‘rw’ для владельцев файлов, ‘—‘ для всех остальных:

$ chmod -R u+rwX,g-rwx,o-rwx directory

10. Забрать у всех права на исполнение файлов в директории и поддиректориях, но в то же время, разрешить всем просматривать содержимое директорий:

$ chmod -R a-x+X directory