Расширенные права Suid, Guid, Sticky bit
Изначально каждый файл имеет три параметра доступа:
Чтение
разрешает получать содержимое файла, но на запись нет. Для каталога позволяет получить список файлов и каталогов, расположенных в немЗапись
разрешает записывать новые данные в файл или изменять существующие, а также позволяет создавать и изменять файлы и каталогиВыполнение
вы не можете выполнить программу, если у нее нет флага выполнения. Этот атрибут устанавливается для всех программ и скриптов, именно с помощью него система может понять, что этот файл нужно запускать как программу
Но все эти права были бы бессмысленными, если бы применялись сразу для всех пользователей. Поэтому каждый файл имеет три категории пользователей, для которых можно устанавливать различные сочетания прав доступа:
Владелец
набор прав для владельца файла, пользователя, который его создал или сейчас установлен его владельцем. Обычно владелец имеет все права, чтение, запись и выполнениеГруппа
любая группа пользователей, существующая в системе и привязанная к файлу. Но это может быть только одна группа и обычно это группа владельца, хотя для файла можно назначить и другую группуОстальные
все пользователи, кроме владельца и пользователей, входящих в группу файла
Именно с помощью этих наборов полномочий устанавливаются права файлов в linux. Каждый пользователь может получить полный доступ только к файлам, владельцем которых он является или к тем, доступ к которым ему разрешен. Только пользователь Root может работать со всеми файлами независимо от их набора их полномочий. Сейчас добавлено еще несколько флагов, которые позволяют делать файлы не изменяемыми или же выполнять от имени суперпользователя, их мы рассмотрим ниже.
Специальные права доступа
Для того, чтобы позволить обычным пользователям выполнять программы от имени суперпользователя без знания его пароля была придумана такая вещь, как SUID
и SGID
биты. Рассмотрим эти полномочия подробнее:
SUID
если этот бит установлен, то при выполнении программы, id пользователя, от которого она запущена заменяется на id владельца файла. Фактически, это позволяет обычным пользователям запускать программы от имени суперпользователяSGID
этот флаг работает аналогичным образом, только разница в том, что пользователь считается членом группы, с которой связан файл, а не групп, к которым он действительно принадлежит. Если SGID флаг установлен на каталог, все файлы, созданные в нем, будут связаны с группой каталога, а не пользователя. Такое поведение используется для организации общих папокSticky-bit
этот бит тоже используется для создания общих папок. Если он установлен, то пользователи могут только создавать, читать и выполнять файлы, но не могут удалять файлы, принадлежащие другим пользователям
Как посмотреть права доступа
Можете посмотреть права доступа к файлам в Linux с помощью файлового менеджера. Все они поддерживают эту функцию, но так вы получите неполную информацию. Для максимально подробной информации обо всех флагах, в том числе специальных, нужно использовать команду ls -l
. Все файлы из каталога будут выведены в виде списка, и там будут показаны все атрибуты и биты.
Чтобы узнать права на файл linux выполните такую команду, в папке где находится этот файл:
ls -l
Рассмотрим подробнее, что значат условные значения флагов прав:
---
нет прав, совсем--x
разрешено только выполнение файла, как программы но не изменение и не чтение-w-
разрешена только запись и изменение файла-wx
разрешено изменение и выполнение, но в случае с каталогом, вы не можете посмотреть его содержимоеr--
права только на чтениеr-x
только чтение и выполнение, без права на записьrw-
права на чтение и запись, но без выполненияrwx
все права--s
установлен SUID или SGID бит, первый отображается в поле для владельца, второй для группы--t
установлен sticky-bit, а значит пользователи не могут удалить этот файл
В нашем примере, файл test1
имеет типичные разрешения для программ, владелец может все, группа только чтение и выполнение, а все остальные только выполнение. Для test2
дополнительно установлен флаг SUID
и SGID
. Для папки test3
установлен Sticky-bit
. Файл test4
доступный всем. Теперь вы знаете как посмотреть права на файл linux.
Как изменить права файла
Команда chmod
имеет типичный для команд linux синтаксис:
chmod опции права файл
Числовой формат
SUID
имеет числовое значение4
SGID
имеет числовое значение2
sticky bit
имеет числовое значение1
Если хотите применить эти разрешения, вам нужно добавить четырехзначный аргумент в chmod
, первая цифра которого относится к специальным разрешениям. Добавим разрешение SGID
на каталог и установим rwx
для пользователя и rx
для группы и других:
chmod 2755 /somedir
Буквенное обозначение
SUID
имеет буквенное значениеu+s
SGID
имеет буквенное значениеg+s
sticky bit
имеет чбуквенное значение+t
Я рекомендую работать в буквенном режиме, если вам нужно применить какое-либо из специальных разрешений:
chmod g+s /somedir
В таблице обобщено все, что важно знать об управлении специальными разрешениями:
Права | Числовой формат | Буквенный режим | Применение к файлам | Применение к каталогам |
SUID | 4 | u+s | Пользователь выполняет файл разрешениями владельца файла | Нет смысла применять |
SGID | 2 | g+s | Пользователь выполняет файл с разрешениями владельца группы | Файлы, созданные в каталоге, получают одного и того же владельца группы |
sticky bit | 1 | +t | Нет смысла применять | Запрещает пользователям удалять файлы от других пользователей |