Благодаря правам на файлы вы можете ограничивать их использование пользователями. В этой статье только теория если вас интересуют команды, то вам сюда.

Каждый файл имеет три категории по которым можно раздать права на файл:

  1. Владелец файла, обычно тот, кто создал файл
  2. Группа владелец файла, обычно основная группа создателя файла
  3. Остальные пользователя, все кто не вошёл в список первых двух

linux perms

В иерархии самый большой вес привилегий имеет владелец файла (5), затем идёт группа владелец (6) и уже самый минимальный вес у остальных.

Расшифровка RWX

Существуют три категории доступа к файлам: read, write, execute. При этом они по-разному влияют на файлы и директории. Таблица ниже расшифровывает каждый из них.

Право Файлы Директории Цифра
r (read) Файл может быть прочитан Возможен просмотр списка документов в каталоге 4
w Контент файла может быть изменён Можно создавать или удалять файлы в каталоге 2
x Файл может быть исполняемым Можно переместиться в каталог (cd) 1

На картинке ниже права представлены в цифровом виде:

  • 7 - означает что пользователь имеет все права (rwx)
  • 4 - означает что пользователь имеет права только на чтение файла ( r )
  • 0 - права на файл отсутствуют

file permissions in linux

Получается у нас есть 2 пользователя и одно группа all. В группе состоит пользователь Ivan. В итоге мы имеем:

  • Пользователь Ivan имеет полный доступ к файлу FILE1, так как он его владелец и для владельца выставлены максимальные права - цифра 7
  • Пользователь Valera не имеет прав на FILE1 так как для него действует 3 цифра 0, потому что он входит в категорию остальные пользователи
  • Пользователь Ivan имеет полный доступ к файлу FILE2, так как он входит в группу владельцев файла - All. А для этой группы выставлены полные права - цифра 7
  • Пользователь Valera имеет права на чтение файла FILE2 так как для него действует 3 цифра 4, потому что он входит в категорию остальные пользователи
  • Ни Ivan, ни Valera не имеют никаких прав на FILE3 потому что не являются владельцами файла, а для остальных пользователей права выставлены в 0

Т.е. когда вы видите цифры 740 это и есть обозначение прав на файл, где порядковый номер цифры соответствует категории, которые мы рассматривали в самом начале статьи.

Просмотр прав на файл

Для того чтобы посмотреть какие права выставлены для файла мы можем воспользоваться командой ls -la.

sudo ls -l 
drwx------.  2 Ivan  Ivan    19 Nov  3 14:37 folder1
drwxrwxr--.  2 Huan  All     19 Nov  3 14:37 folder2
drwxrwx---.  2 Huan  Huan    19 Nov  3 14:38 folder3

В ОС права представляются в виде букв по три штуки, т.е. полные права обозначаются как rwx или 421. Первая буква d обозначает что это директория.

Рассмотрим подробнее строку drwxrwxr--. 2 Huan All 19 Nov 3 14:37 folder2:

  • drwxrwxr–. 2 Huan All 19 Nov 3 14:37 folder2 - означает что это директория
  • drwxrwxr–. 2 Huan All 19 Nov 3 14:37 folder2 - права для владельца
  • drwxrwxr–. 2 Huan All 19 Nov 3 14:37 folder2 - права для группы владельца
  • drwxrwxr--. 2 Huan All 19 Nov 3 14:37 folder2 - права для всех остальных
  • drwxrwxr–. 2 Huan All 19 Nov 3 14:37 folder2 - владелец директории
  • drwxrwxr–. 2 Huan All 19 Nov 3 14:37 folder2 - группа владелец директории
  • drwxrwxr–. 2 Huan All 19 Nov 3 14:37 folder2 - имя директории

Права на файл по умолчанию

Когда вы создаёте файл ему назначаются права по умолчанию, или как их еще называют начальные права.

Когда вы создайте директорию то права по умолчанию у неё выставляются в 0777, а для файла 0666. Права на исполнение файла всегда задаются самим пользователем.

И так если верить теории выше, то сейчас мы создадим файл и права у него будут 666.

touch umask.txt
ls -la umask.txt
-rw-rw-r--. 1 admin admin 0 Nov  7 13:55 umask.txt

Но мы видим, что права у нас 664. Так в чем же дело? Дело в том, что тут вмешался umask.

Демонстрация всего выше описанного

IVAN - FILE1

ls -l
drwx------. 2 Ivan Ivan 19 Nov  3 14:37 folder1
drwxrwxr--. 2 Huan All  19 Nov  3 14:37 folder2
drwxrwx---. 2 Huan Huan 19 Nov  3 14:38 folder3
sudo su - Ivan
ls folder1/
cat folder1/FILE1
FILE1
file1
echo Ivan >> folder1/FILE1
cat folder1/FILE1
file1
Ivan
mv folder1/FILE1 folder1/FILE1-1
ls folder1/
FILE1-1

IVAN - FILE2

ls folder2/
FILE2
cat folder2/FILE2
file2
echo Ivan >> folder2/FILE2
-bash: folder2/FILE2: Permission denied

VALERA - FILE1

sudo su - Valera
ls folder1/
cd folder1/
ls: cannot open directory 'folder1/': Permission denied
-bash: cd: folder1/: Permission denied

VALERA - FILE2

ls folder2/
cd folder2/
ls: cannot access 'folder2/FILE2': Permission denied
FILE2

-bash: cd: folder2/: Permission denied
ls folder2/
cd folder2/
ls: cannot access 'folder2/FILE2': Permission denied
FILE2

-bash: cd: folder2/: Permission denied
ls folder2/
cd folder2/
cat folder2/FILE2

cat: folder2/FILE2: Permission denied

При выводе содержимого файла мы получаем ошибку хотя мы имеем права на чтение файла. Дела в том, что на каталог folder2 у нас права r--. Но для того чтобы открыть файл нам надо попасть в каталог, а для этого нам нужен еще x.

sudo chmod a+x folder2/
ls -l folder2
drwxrwxr-x.  2 Huan  All    19 Nov  3 14:37 folder2
cat folder2/FILE2
file2
echo Valera >> folder2/FILE2
-bash: folder2/FILE2: Permission denied