Полный цикл в digital

Команда chmod права доступа в Linux

В модели безопасности Unix, пользователь может владеть файлами и каталогами. Когда пользователь владеет файлом или каталогом, он контролирует доступ к нему.

Для всех файлов атрибуты означают:

  1. Разрешение на чтение содержимого файла, обозначается буквой r
  2. Разрешение на редактирование и запись содержимого файла, обозначается буквой w
  3. Разрешение на исполнение или запуск скрипта, обозначается буквой x

Для папок атрибуты означают:

  1. Разрешение на чтение позволяет пользователю получить список содержимого папки, обозначается буквой r
  2. Разрешение на запись позволяет пользователю создавать и удалять файлы в этой папке, обозначается буквой w
  3. Разрешение на исполнение разрешает пройти сквозь папку, обозначается буквой x

В свойствах каждого файла и директории разрешения устанавливаются отдельно для:

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

Значения имеют не только права доступа к файлу, а также его владелец и группа.

Специальные права доступа к файлам в Linux

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

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

Числовой формат

  • SUID имеет числовое значение 4
  • SGID имеет числовое значение 2
  • sticky bit имеет числовое значение 1

Если хотите применить эти разрешения, вам нужно добавить четырехзначный аргумент в chmod, первая цифра которого относится к специальным разрешениям. Добавим разрешение SGID на каталог и установим rwx для пользователя и rx для группы и других:

chmod 2755 /somedir

Буквенное обозначение

  • SUID имеет буквенное значение u+s
  • SGID имеет буквенное значение g+s
  • sticky bit имеет чбуквенное значение +t

В таблице обобщено все, что важно знать об управлении специальными разрешениями:

Права Числовой формат Буквенный режим Применение к файлам Применение к каталогам
SUID 4 u+s Пользователь выполняет файл разрешениями владельца файла Нет смысла применять
SGID 2 g+s Пользователь выполняет файл с разрешениями владельца группы Файлы, созданные в каталоге, получают одного и того же владельца группы
sticky bit 1 +t Нет смысла применять Запрещает пользователям удалять файлы от других пользователей

Команда ls посмотреть владельца и права доступа к файлам/папкам

Для максимально подробной информации обо всех флагах, в том числе специальных, нужно использовать команду ls с параметром -l:

ls -l файл

Пример вывода:

тип файла, если первый символ -, это обычный файл. Если первый символ d, это каталог
|cледующие 3 символа показывают разрешения для владельца
||  следующие 3 символа показывают разрешения для группы
||  |  последние 3 символа показывают разрешения для всех остальных
||  |  |     владелец 
||  |  |     |     группа
||  |  |     |     |
-rw-rw-r-- 1 vadik vadik 664 дек 13 14:19 index.html

Каждый пользователь может принадлежать к одной или нескольким группам. У пользователя одна группа является основной. Основная группа имеет следующее значение: создаваемый пользователем файл в качестве владельца будет иметь текущего пользователя, а в качестве группы получит главную группу текущего пользователя. Другого практического значения выделения главной группы нет — пользователь будет иметь доступ к ресурсам всех групп, в которые он входит.

Команда chmod изменение прав доступа к файлам/папкам

Команда chmod имеет типичный для команд вид.

Синтаксис

chmod опции права файл

Опции

  • -c выводить информацию обо всех изменениях
  • -f не выводить сообщения об ошибках
  • -v выводить максимум информации
  • -R включить поддержку рекурсии
  • --preserve-root не выполнять рекурсивные операции для корня "/"
  • --reference взять маску прав из указанного файла
  • --version вывести версию утилиты

Буквенное обозначение

Права доступа в linux бывают четырех основных видов:

  1. r чтение
  2. w запись
  3. x выполнение
  4. s выполнение от имени суперпользователя, для SUID и SGID

Есть три категории пользователей, для которых можно установить права:

  1. u владелец файла
  2. g группа файла
  3. o все остальные пользователи

Математические операции означают следующее:

  • + добавляет к текущим правам доступа новое разрешение
  • - удаляет из текущих прав доступа определенное разрешение
  • = устанавливает полностью новые разрешения, предыдущие перезаписываются новыми

В одной команде можно перечислять владельцев и их разрешения через запятую.

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

В качестве действий могут использоваться знаки + включить или - отключить. Рассмотрим несколько примеров:

  • u+x разрешить выполнение для владельца
  • ugo+x разрешить выполнение для всех
  • ug+w разрешить запись для владельца и группы
  • o-x запретить выполнение для остальных пользователей
  • ugo+rwx разрешить все для всех

Числовой формат

  • 0 никаких прав
  • 1 только выполнение
  • 2 только запись
  • 3 выполнение и запись
  • 4 только чтение
  • 5 чтение и выполнение
  • 6 чтение и запись
  • 7 чтение запись и выполнение

Если используется цифровая запись, первая цифра определяет права владельца, вторая права группы, третья права всех остальных пользователей:

Числовое обозначение Буквенное обозначение Описание
400 -r-------- Владелец файла может только читать файл. Для всех остальных все действия с файлом запрещены
644 -rw-r--r-- Все пользователи могут читать файл. Владелец может изменять файл
660 -rw-rw---- Владелец и группа могут читать и изменять файл. Для всех остальных все действия с файлом запрещены
664 -rw-rw-r-- Все могут читать файл. Владелец и группа могут изменять
666 -rw-rw-rw- Все могут читать и изменять файл
700 -rwx------ Владелец может читать, изменять и запускать файл. Для всех остальных все действия с файлом запрещены
744 -rwxr--r-- Все могут читать файл. Владелец может также изменять и запускать файл
755 -rwxr-xr-x Все могут читать и запускать файл. Владелец может также изменять файл
777 -rwxrwxrwx Все пользователи могут читать, изменять и редактировать файл

Рекурсивная смена прав

Для смены прав будет использоваться всё та же команда chmod, к ней будет добавлен параметр –R, который собственно и указывает на то, что необходимо сменить права не только самой директории, но и на вложенные папки и файлы. Меняем права на директорию /home/qwerty, а так же на всё содержимое директории:

chmod -R 755 /home/qwerty
chmod -R u+rwx,go+rx /home/qwerty

Примеры

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

chmod ugo+rwx test5
chmod 777 test5

Заберем все права у группы и остальных пользователей:

chmod go-rwx test5
chmod 700 test5

Дадим группе право на чтение и выполнение:

chmod g+rx test5
chmod 050 test5

Остальным пользователям только чтение:

chmod o+r test5
chmod 500 test5

Для файла установим SUID:

chmod u+s test6
chmod 4755 test6

Для файла установим SGID:

chmod g+s test7
chmod 2755 test7

Какие права следует выставлять

Обычно корректными правами для папок являются 755, а для файлов 644, возможны исключения о которых должен знать разработчик сайта. Также информацию по используемым атрибутам доступа можно найти в документации или на тематических форумах используемой CMS.

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг