Типы разрешений

В Linux разрешения назначаются пользователям и группам. Каждый пользователь может быть членом разных групп, и членство в этих группах дает пользователю конкретные дополнительные разрешения. Каждый файл и каталог принадлежат определенному пользователю и определенной группе. Таким образом, разрешения для пользователей и групп, которые определили файл, также определяются для соответствующих владельцев.

Когда мы создаем новые файлы или папки, они принадлежат к группе, к которой мы принадлежим, и к нам. Когда пользователь хочет получить доступ к содержимому каталога Linux, он должен сначала пройти через каталог, требуя, чтобы пользователь имел разрешения на выполнение этой папки. Без этого разрешения пользователь не сможет получить доступ к содержимому каталога и вместо этого получит сообщение об ошибке Permission denied.

┌──(k1ber㉿kali)-[~]
└─$ ls -l
total 16
drw-r--r-- 2 k1ber k1ber 4096 Apr  3 11:20 BlockedDir
drwxr-xr-x 2 k1ber k1ber 4096 Apr  3 11:19 Desktop
drwxr-xr-x 2 k1ber k1ber 4096 Apr  3 11:19 Documents
drwxr-xr-x 2 k1ber k1ber 4096 Apr  3 11:19 Downloads

┌──(k1ber㉿kali)-[~]
└─$ ls -la BlockedDir/
ls: cannot access 'BlockedDir/secrets.txt': Permission denied
ls: cannot access 'BlockedDir/..': Permission denied
ls: cannot access 'BlockedDir/help.txt': Permission denied
ls: cannot access 'BlockedDir/.': Permission denied
total 0
d????????? ? ? ? ?            ? .
d????????? ? ? ? ?            ? ..
-????????? ? ? ? ?            ? help.txt
-????????? ? ? ? ?            ? secrets.txt

Важно отметить, что разрешения на выполнение необходимы для обхода каталога, независимо от уровня доступа пользователя. Кроме того, разрешения на выполнение в каталоге не позволяют пользователю выполнять или изменять какие-либо файлы или содержимое в папке, только для обхода и доступа к содержимому каталога. Для выполнения файлов в каталоге пользователю необходимо выполнить разрешения для соответствующего файла. Чтобы изменить содержимое каталога (создать, удалить или переименовать файлы и подкаталоги), пользователю необходимы разрешения на запись в каталог. Вся система разрешений в системах Linux основана на восьмеричной системе счисления, и в основном существует три различных типа разрешений, которые могут быть назначены файлу или директории:

Разрешения могут быть установлены для владельца, группы и других лиц:

┌──(k1ber㉿kali)-[~]
└─$ ls -l /home/
total 8
d rwx r-x r-x  9 k1ber k1ber 4096 Apr  3 11:20 k1ber
- --- --- ---  |  |     |     |   |__________|
|  |   |   |   |  |     |     |        |_ Дата
|  |   |   |   |  |     |     |__________ Размер файла
|  |   |   |   |  |     |_______________ Группа
|  |   |   |   |  |____________________ Пользователь
|  |   |   |   |_______________________ Количество жестких ссылок
|  |   |   |_ Разрешения остальных (чтение,выполнение)
|  |   |_____ Разрешения группы (чтение,выполнение)
|  |_________ Разрешения владельца (чтение,запись, выполнение)
|____________ Тип файла (- = Файл, d = Папка, l = Ссылка, ... )

Изменение разрешений

Изменение разрешений происходит с помощью команды chmod. Для указания группы разрешений используется:

u - владелец, g - группа, o - другие, a - все, также + или - для добавления или удаления назначенных разрешений.

Пример выдачи разрешения для запуска файла help.txt всем пользователям:

┌──(k1ber㉿kali)-[~/BlockedDir]
└─$ ls -l
total 8
-rw-r--r-- 1 k1ber k1ber 4 Apr  3 11:20 help.txt
-rw-r--r-- 1 k1ber k1ber 5 Apr  3 11:20 secrets.txt

┌──(k1ber㉿kali)-[~/BlockedDir]
└─$ chmod +x help.txt 

┌──(k1ber㉿kali)-[~/BlockedDir]
└─$ ls -l
total 8
-rwxr-xr-x 1 k1ber k1ber 4 Apr  3 11:20 help.txt
-rw-r--r-- 1 k1ber k1ber 5 Apr  3 11:20 secrets.txt

Пример запрета на чтения для всех остальных, кто не является пользователем k1ber или не состоит в группе k1ber для файла secrets.txt:

┌──(k1ber㉿kali)-[~/BlockedDir]
└─$ chmod o-r secrets.txt 

┌──(k1ber㉿kali)-[~/BlockedDir]
└─$ ls -l
total 8
-rwxr-xr-x 1 k1ber k1ber 4 Apr  3 11:20 help.txt
-rw-r----- 1 k1ber k1ber 5 Apr  3 11:20 secrets.txt

┌──(k1ber㉿kali)-[~/BlockedDir]
└─$ su kali
Password: 
┌──(kali㉿kali)-[/home/k1ber/BlockedDir]
└─$ cat secrets.txt 
cat: secrets.txt: Permission denied

Изменение владельца

Чтобы изменить владельца и/или групповые назначения файла или каталога, мы можем использовать команду chown. Синтаксис выглядит следующим образом:

┌──(k1ber㉿kali)-[~]
└─$ chown <пользователь>:<группа> <файл/папка>