Разрешения
Владение
Владение (ownership) - определяет разрешения, которые имеет пользователь
У каждого файла есть пользователь-владелец, группа-владелец и другие сущности, которым предоставлен доступ (UGO - user, group, other)
Разрешения не имеют каких-либо дополнений, если вы владелец - вам предоставляются права, и все
Сначала проверяется владение пользователем, если совпадает - доступ дается, дальше не проверяется
Затем проверяется группа, если совпадает - доступ дается, дальше не проверяется
В случае отсуствия совпадения по пользователю и группе доступ дается на основе прав для others
ls -l отображает текущее владение и связаннные разрешения
drwxr-xr--
d - директория
rwx - права пользователя (read, write, execute)
r-x - права группы
r-- - права для других
Изменение владений
chown user[:group] file - для установки владений
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
Default ACL наследует стандартные разрешения, применяемые к директории
Маска в ACL отфильтровывает разрешение на исполнение, поскольку это противоречит концепции безопасности в Linux
Разрешение на исполнение в Linux по-умолчанию не может быть получено и должно выставляться отдельно
Last updated
Was this helpful?