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

Права доступа и владельцы в Linux

Пользователи и группы пользователей в рамках системы могут быть описаны в локальных файлах /etc/passwd и /etc/group или объявлены на уровне сервера NIS, LDAP или домена Samba. Эти пользователи и группы пользователей могут владеть файлами. На самом деле каждым файлом владеет как пользователь, так и группа пользователей.

Владельцы, участники группы и все остальные

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

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

  1. Разрешение на чтение содержимого файла, обозначается буквой r от английского read
  2. Разрешение на редактирование и запись содержимого файла, обозначается буквой w от английского write
  3. Разрешение на исполнение или запуск скрипта, обозначается буквой x от английского eXecute. На виртуальном хостинге право на исполнение применимо только к папкам и CGI-скриптам. Для обычных файлов (HTML-страницы, картинки, PHP скрипты и т.п.) право на исполнение не будет применяться

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

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

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

  1. Владельца файла
  2. Группы владельцев файла, которой принадлежит этот файл
  3. Всех остальных

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

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

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

Посмотреть права доступа к файлам в Linux проше с помощью графического редактора mc.

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

ls -l файл

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

user@bash: ls -l /home/karpaff/linuxtutorialwork/chick.png
-rwxr----x 1 harry users 2.7K Jan 4 07:32 /home/karpaff/linuxtutorialwork/chick.png
user@bash:

Первое слово harry говорит о том, что владельцем является пользователь harry. Второе слово users говорит о том, что файл относиться к группе users. В приведенном выше примере первые 10 символов вывода показывают информацию по файлу:

  • Первый символ определяет тип файла. Если первый символ -, то это обычный файл. Если первый символ d, то это каталог.
  • Следующие 3 символа показывают разрешения для владельца. Буква означает наличие разрешения, а прочерк - — его отсутствие. В нашем примере у владельца есть все разрешения (чтение, запись и выполнение).
  • Следующие 3 символа показывают разрешения для группы. В этом примере у членов группы есть разрешение на чтение, но нет разрешений на запись и выполнение. Обратите внимание, порядок записи разрешений всегда такой: чтение, запись, выполнение. 
  • Последние 3 символа показывают разрешения для всех остальных пользователей. В этом примере у них есть только разрешение на выполнение.

Рассмотрим подробнее, что значат условные значения флагов прав:

Цифровая запись Буквенная запись Права
0 --- Разрешения отсутствуют
1 --x Для файлов запуск скрипта
Для папок пройти сквозь папку
2 -w- Для файлов разрешение на редактирование и запись
Для папок позволяет создавать и удалять файлы
3 -wx Запуск + изменение
4 r-- Для файлов разрешение на чтение содержимого
Для папок позволяет получить список содержимого папки
5 r-x Чтение + запуск
6 rw- Чтение + изменение
7 rwx Чтение + изменение + запуск

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

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

Команда chmod имеет типичный для команд linux синтаксис:

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

Опций команды, которые нам понадобятся во время работы:

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

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

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

  • r чтение
  • w запись
  • x выполнение
  • s выполнение от имени суперпользователя (дополнительный)

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

  • u владелец файла
  • g группа файла
  • 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

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

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

Изменение владельца для файла/папки

Синтаксис chown, как и других подобных команд linux очень прост:

chown имя_пользователя опции файл

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

chown имя_пользователя:группа опции файл

Основные опции которые могут понадобиться:

Короткий формат опции Длинный формат Описание
-c --changes Подробный вывод всех выполняемых изменений
-f --silent, --quiet Минимум информации, скрыть сообщения об ошибках
- --dereference Изменять права для файла к которому ведет символическая ссылка вместо самой ссылки (поведение по умолчанию)
-h --no-dereference Изменять права символических ссылок и не трогать файлы, к которым они ведут
- --from Изменять пользователя только для тех файлов, владельцем которых является указанный пользователь и группа
-R --recursive Рекурсивная обработка всех подкаталогов
-H - Если передана символическая ссылка на директорию - перейти по ней
-L - Переходить по всем символическим ссылкам на директории
-P - Не переходить по символическим ссылкам на директории (по умолчанию)
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг