Как сменить владельца папки и изменить права доступа в Linux

Как сменить владельца папки и изменить права доступа в Linux

На ОС Linux полномочия имеет критически важное значение: распределение прав доступа между пользователями позволяет контролировать систему и ограничивать её от нежелательных вмешательств. Рассказываем, как устроена система полномочий пользователей, как сменить владельца и настроить разрешения папки.

Немного о правах доступа

Прежде всего нужно отметить, что в Linux все объекты считаются файлами (то есть папка с точки зрения операционной системы это файл, содержащий список других файлов и ссылки на них). Поэтому доступ к папкам организован так же, как и к файлам.

Права доступа различаются в зависимости от действий, которые может произвести пользователь, в Linux это может быть:

  • чтение, просмотр содержимого, обозначается как r (read) ;
  • запись, создание объектов внутри директории, изменение содержимого, удаление — w (write);
  • выполнение, право запустить файл, право перехода в директорию — x (execute).

Папкам и файлам в системе Linux присваивается трёхзначное число, в котором закодированы разрешения на доступ к ним. Первая цифра обозначает совокупность прав доступа пользователя-владельца, вторая — первичной группы владельца, и третья — всех остальных. Группа пользователя создаётся по умолчанию в момент его создания, впоследствии эту настройку можно изменить.

Число формируется следующим образом:

Число пользователей, представление в виде таблицы

Право на чтение даёт 4 единицы, запись — 2, выполнение — 1. Значения подобраны так, чтобы разные сочетания никогда не давали одинаковых сумм:

  • 7 | rwx | может обозначать только максимальный доступ (4 + 2 + 1),
  • 6 | rw- | — чтение и запись (4 + 2 + 0),
  • 5 | r-x | — чтение и выполнение (4 + 0 + 1),
  • 4 | r— | — только чтение (4 + 0 + 0),
  • 3 | -wx | — запись и выполнение (0 + 3 + 1),
  • 2 | -w- | — только запись (0 + 2 + 0),
  • 1 | —x | — только выполнение (0 + 0 + 1),
  • 0 | — | — полный запрет действий (0 + 0 + 0).

Стандартными настройками для общих папок являются 755 | rwxr-xr-x |, для домашних каталогов — 750 |rwxr-x—| и 700 |rwx——|, для исполняемых файлов обычно устанавливают 755 | rwxr-xr-x |, для содержащих данные — 644 | rw-r—r— |, 640 | rw-r—— | и 600 |rw——-|.

Как узнать владельца и разрешения папки

Введите в терминале команду ls с флагом -ld (-d указывает на directory), затем укажите путь:

ls -ld <directory>

Или -l для вывода информации о всех вложенных объектах:

ls -l <directory>

Утилита выведет десять символов, первый из которых — это тип объекта, а остальные — разрешения, после чего будет указан владелец и его группа.


Выбирайте для своих веб-проектов надёжного провайдера. Например, аренда VPS от AdminVPS — это:

  • бесплатное администрирование,
  • NVMe-диски,
  • быстрая техподдержка,
  • защита от DDoS-атак,
  • доступная цена.

Кто может менять владельца или разрешения на доступ

Сделать это могут текущий владелец и рут-пользователь. Обратите внимание, что по умолчанию суперпользователь имеет полный доступ ко всей файловой системе.

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

Как сменить владельца папки

Смена возможна с помощью двух утилит: chown и chgrp.

Chown

После chown нужно указать имя нового владельца и название его группы, разделённые двоеточием, затем директорию:

chown [new owner]:[new group] [изменяемый объект]

Команде можно передать только нового владельца или только группу. Смена владельца домашней директории user1 на пользователя Alex:

chown Alex <directory/user1>

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

chown :group1 <directory/user1>

Чтобы поменять настройки доступа рекурсивно (во всех дочерних папках и вложенных файлах) применяйте флаг -R. Например, следующей командой мы передадим права на директорию user1, в том числе на всё её содержимое, пользователю Alex и его первичной группе; команда будет выглядеть так:

chown -R Alex:Alex <directory/user1>

Chgrp

Эта утилита имеет ограниченные функции и может сменить только группу:

chgrp <new_group> <directory>

Как и chown, утилита поддерживает рекурсивные операции.

Как изменить разрешения утилитой chmod

Команда chmod имеет вид:

Chmod <опции, модификаторы> <права> <путь к объекту>

Chmod с правами доступа, записанными в виде чисел

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

Команда, которая присвоит разрешения 600 указанному объекту:

chmod 600 testfile.doc

Выборочное изменение прав с записью символами

Здесь команда получается длиннее, но её запись более наглядная. К тому же можно изменить параметры выборочно с сохранением всех остальных прав.

Укажите после chmod категорию пользователя, к которому будут применены изменения, модификатор, разрешения и путь к объекту.

Категория:

  • -u — для пользователя-владельца,
  • -g — для группы,
  • -o — для остальных пользователей,
  • -a — для всех (то есть u + g + o).

Модификатор (действие):

  • + — дать разрешение,
  • — — удалить,
  • = — заменить.

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

chmod a+x directory1/testfile1

Удаление права изменения у всех, кроме владельца:

chmod go-w directory2/testfile2

Установка максимальных разрешений владельцу (значения будут перезаписаны):

chmod u=rwx directory3/testfile3

Изменение параметров по типу объекта

Команда будет выполнена только для всех папок в указанной директории (сначала будут найдены все папки в директории, затем перезаписаны разрешения):

find /dir0/dir1/ -type d -exec chmod 744 {} \;

А эта команда только для файлов:

find /dir0/dir2/ -type f -exec chmod 640 {} \;

Дополнительные опции

  • -R, -recursive: изменение разрешений для всех вложенных объектов;
  • —preserve-root: запрет выполнения рекурсивных операций для корня «/»;
  • -f, -silent, -quiet: «тихое» выполнение, подавляет вывод сообщений об ошибках или предупреждений;
  • -v, -verbose: вывод подробной информации о ходе процесса;
  • -c, -change: вывод сообщения, если с объектом произошли изменения;
  • —reference: скопировать права из переданного объекта;
  • —version: сообщение с версией утилиты.

Подведём итоги

  • В Linux существует три типа разрешений: чтение, запись, исполнение.
  • Также для каждой папки или файла существуют три категории пользователей: владелец, его группа и все остальные.
  • Все объекты в Linux считаются файлами, в том числе папки, устройства и т. д. Поэтому ко всем объектам применяется одна и та же система прав доступа, а изменения вносят одними инструментами.
  • Права доступа имеют числовую и символьную записи; например, 644 и rw-r—r—.
  • Чтобы изменить владельца, используют утилиту Chown.
  • Чтобы изменить группу — Chown и Chgrp.
  • Чтобы отредактировать права доступа — Chmod.

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

Читайте в блоге:

Что будем искать? Например,VPS-сервер

Мы в социальных сетях