[[A8R.ru]]
...
Изучаем команду chown: управление владельцами и группами в Linux

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

17.03.2024
Linux, Permission

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

Содержание:

Как использовать chown

Прежде чем перейти к использованию chown команды, давайте начнем с рассмотрим базовый синтаксис.

chown команда принимает следующий вид:

chown [OPTIONS] USER[:GROUP] FILE(s)

USER это имя пользователя или идентификатор пользователя (UID) нового владельца. 

GROUP это имя новой группы или идентификатор группы (GID). 

FILE(s) - это имя одного или нескольких файлов, каталогов или ссылок. Числовые идентификаторы должны начинаться символом +.

  • USER - Если указан только пользователь, указанный пользователь станет владельцем данных файлов. Групповое владение не изменяется.
  • USER: - Когда за именем пользователя следует двоеточие :, а название группы не указано, пользователь становится владельцем файлов, а право собственности на группу файлов меняется на право входа пользователя в группу.
  • USER:GROUP - Если указаны и пользователь, и группа (без пробелов между ними), пользовательское право собственности на файлы меняется на данного пользователя, а групповое право собственности меняется на данную группу.
  • :GROUP - Если Пользователь опущен, а перед группой стоит двоеточие :, меняется только групповое владение файлами на данную группу.
  • : Если указано только двоеточие : без указания пользователя и группы, изменения не вносятся.

По умолчанию chown не выдает никаких выходных данных при успешном выполнении и возвращает ноль.

Чтобы узнать, кому принадлежит файл или к какой группе принадлежит файл, используйте команду ls -l:

ls -l filename.txt

Вывод:

-rw-r--r-- 12 linuxize users 12.0K Apr  8 20:51 filename.txt
|[-][-][-]-   [------] [---]
                |       |
                |       +-----------> Group
                +-------------------> Owner

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


Как изменить владельца файла

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

chown USER FILE

Например, следующая команда изменит владельца файла с именем file1 на нового владельца с именем linuxize

chown linuxize file1

Чтобы изменить право собственности на несколько файлов или каталогов, укажите их в виде списка, разделенного пробелами. Приведенная ниже команда изменяет владельца файла с именем file1 и каталога dir1 на нового владельца с именем linuxize

chown linuxize file1 dir1

Как изменить владельца и группу файла

Чтобы изменить владельца и группу файла, используйте chown команду, за которой следуют новый владелец и группа, разделенные двоеточием (:) без пробелов, и целевой файл.

chown USER:GROUP FILE

Следующая команда изменит владельца файла с именем file1 на нового владельца с именем linuxize и группой users:

chown linuxize:users file1

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

chown linuxize: file1

Как изменить группу файла

Чтобы изменить только группу файла, используйте chown команду, за которой следует двоеточие (:) и новое имя группы (без пробелов между ними) и целевой файл в качестве аргумента:

chown :GROUP FILE

Следующая команда изменит группу владельцев файла с именем file1 на www-data:

chown :www-data file1

Как изменить владение символическими ссылками

Когда параметр recursive не используется, chown команда изменяет групповое владение файлами, на которые указывают символические ссылки, а не сами символические ссылки.

Например, если вы попытаетесь изменить владельца и группу символической ссылки, symlink1 которая указывает на /var/www/file1, chown изменится владелец файла или каталога, на который указывает символическая ссылка:

chown www-data: symlink1

Скорее всего, вместо изменения целевого владельца вы получите сообщение об ошибке “невозможно разыменовать ‘symlink1’: в разрешении отказано”.

Ошибка возникает из-за того, что по умолчанию в большинстве дистрибутивов Linux символические ссылки защищены, и вы не можете работать с целевыми файлами. Этот параметр указан в /proc/sys/fs/protected_symlinks. 1 означает включено, а 0 отключено. Мы рекомендуем не отключать защиту символических ссылок.

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

chown -h www-data symlink1

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

Чтобы рекурсивно работать со всеми файлами и каталогами в данном каталоге, используйте опцию -R (--recursive):

chown -R USER:GROUP DIRECTORY

В следующем примере будет изменено право собственности на все файлы и подкаталоги в /var/www каталоге на нового владельца и группу с именем www-data:

chown -R www-data: /var/www

Если каталог содержит символические ссылки, передайте параметр -h:

chown -hR www-data: /var/www

Другими параметрами, которые можно использовать при рекурсивном изменении владения каталогом, являются -H и -L.

Если аргумент, передаваемый chown команде, представляет собой символическую ссылку, указывающую на каталог, то параметр -H заставит команду перейти по нему. -L указывает chown переходить по каждой символической ссылке к каталогу, который встречается. Обычно вам не следует использовать эти параметры, поскольку это может привести к сбоям в работе вашей системы или создать угрозу безопасности.