Разрешения

Владение

  • Владение (ownership) - определяет разрешения, которые имеет пользователь

  • У каждого файла есть пользователь-владелец, группа-владелец и другие сущности, которым предоставлен доступ (UGO - user, group, other)

  • Разрешения не имеют каких-либо дополнений, если вы владелец - вам предоставляются права, и все

    • Сначала проверяется владение пользователем, если совпадает - доступ дается, дальше не проверяется

    • Затем проверяется группа, если совпадает - доступ дается, дальше не проверяется

    • В случае отсуствия совпадения по пользователю и группе доступ дается на основе прав для others

  • ls -l отображает текущее владение и связаннные разрешения

[root@centos8 ~]# ls -l /home/admin
total 16764
drwxr-xr-x. 2 admin admin        6 Jan  7 12:39 Desktop
-rw-r--r--. 1 root  root  17031320 Nov 19 00:48 docker-compose-Linux-x86_64
drwxr-xr-x. 2 admin admin        6 Jan  7 12:39 Documents
drwxr-xr-x. 2 admin admin        6 Jan  7 12:39 Downloads
drwxrwxr-x. 3 admin admin       23 Feb 16 20:52 folder
drwxr-xr-x. 2 admin admin        6 Jan  7 12:39 Music
drwxr-xr-x. 2 admin admin        6 Jan  7 12:39 Pictures
drwxr-xr-x. 2 admin admin        6 Jan  7 12:39 Public
  • drwxr-xr--

    • d - директория

    • rwx - права пользователя (read, write, execute)

    • r-x - права группы

    • r-- - права для других

Изменение владений

  • chown user[:group] file - для установки владений

[root@centos8 home]# touch newfile
[root@centos8 home]# ls -l
total 4
drwx------. 16 admin admin 4096 Feb 22 17:01 admin
drwx------.  3 bill  bill    78 Feb 23 11:59 bill
-rw-r--r--.  1 root  root     0 Feb 24 10:22 newfile
[root@centos8 home]# chown bill newfile
[root@centos8 home]# ls -l
total 4
drwx------. 16 admin admin 4096 Feb 22 17:01 admin
drwx------.  3 bill  bill    78 Feb 23 11:59 bill
-rw-r--r--.  1 bill  root     0 Feb 24 10:22 newfile
[root@centos8 home]# chown bill:profs newfile
  • chgrp group file - установить группу владения

Разрешения

Файлы

Директории

read

Чтение файлов

Отображение содержимого файлов (ls)

write

Изменение файлов

Удаление, создание файлов в директории

execute

Запуск файлов

Переход в директорию (cd0)

  • execute не может быть без read, поэтому это минимальный набор разрешений для доступа в папку и исполнения файлов в ней

Управления разрешениями

  • chmod - управление разрешениями

    • Может быть использовано в абсолютном или относительном режиме

    • Абсолютный - chmod 750 file

    • Относительный - chmod +x myscript (+x - добавить исполнение файла)

Umask

  • Umask - настройка shell, которая вычитает umask из значений разрешений по-умолчанию

    • Например, если значение umask равняется 174, тогда каждый новый файл будет иметь права доступа 602, а каждый новый каталог — 603

  • Разрешения по-умолчанию для файлов - 666

  • Разрешения по-умолчанию для директорий - 777

  • umask назначается на shell и поэтому применяется ко всем файлам и директориям, создаваемым пользователем

  • Параметры расчета umask находятся в /etc/profile или в home/.bash_profile

Специальные разрешения

Для того, чтобы позволить обычным пользователям выполнять программы от имени суперпользователя без знания его пароля была придумана такая вещь, как SUID и SGID биты.

  • SUID - если этот бит установлен, то при выполнении программы, id пользователя, от которого она запущена заменяется на id владельца файла. Фактически, это позволяет обычным пользователям запускать программы от имени суперпользователя;

  • SGID - этот флаг работает аналогичным образом, только разница в том, что пользователь считается членом группы, с которой связан файл, а не групп, к которым он действительно принадлежит. Если SGID флаг установлен на каталог, все файлы, созданные в нем, будут связаны с группой каталога, а не пользователя. Такое поведение используется для организации общих папок;

  • Sticky-bit - этот бит тоже используется для создания общих папок. Если он установлен, то пользователи могут только создавать, читать и выполнять файлы, но не могут удалять файлы, принадлежащие другим пользователям.

Файлы

Директории

SUID (set user ID) (4)

Запустить как владелец

-

SGID (2)

Запустить как группа-владелец

Наследование группы-владельца

Sticky Bit (1)

-

Удаление, если ты только владелец файла

Управление специальными разрешениями

  • SUID

    • chmod 4770 myfile

    • chmod u+s myfile

  • SGID

    • chmod 2770 mydir

    • chmod g+s mydir

  • Sticky Bit

    • chmod 1770 mydir

    • chmod +t mydir

Понятие ACL

  • ACL - Access Control List - правила, используемые для определения разрешений для дополнительных пользователей и групп

  • Normal ACL - применяется только к созданным файлам

  • Default ACL - применяется и к новым файлам

  • getfacl - показывает текущие настройки

Управление ACL

    • setfacl - устанавливает настройки

      • setfacl -R -m g:somegroup:rx /data/groups

      • setfacl -m d:g:somegroup:rx /data/groups

[root@centos8 home]# getfacl sales
# file: sales
# owner: root
# group: sales
user::rwx
group::rwx
other::---

[root@centos8 home]# setfacl -m d:g:account:rx sales
[root@centos8 home]# ls -l
total 4
drwxrwx---.  2 root  account    6 Feb 24 11:06 account
drwx------. 16 admin admin   4096 Feb 22 17:01 admin
drwx------.  3 bill  bill      78 Feb 23 11:59 bill
-rw-r--r--.  1 bill  root       0 Feb 24 10:22 newfile
drwxrwx---+  2 root  sales      6 Feb 24 11:06 sales
[root@centos8 home]# getfacl sales
# file: sales
# owner: root
# group: sales
user::rwx
group::rwx
other::---
default:user::rwx
default:group::rwx
default:group:account:r-x
default:mask::rwx
default:other::---
  • Default ACL наследует стандартные разрешения, применяемые к директории

  • Маска в ACL отфильтровывает разрешение на исполнение, поскольку это противоречит концепции безопасности в Linux

    • Разрешение на исполнение в Linux по-умолчанию не может быть получено и должно выставляться отдельно

Last updated