
Изучаем команду chown: управление владельцами и группами в Linux
Эта статья представляет обзор команды chown в операционной системе Linux, касающийся управления владельцами и группами файлов. Ты узнаешь, как использовать эту команду для изменения владельца и группы файлов и директорий в Linux, и на что обратить внимание при её использовании.
Команда chown - это важный инструмент в операционной системе Linux, который позволяет изменять владельца и группу файлов и директорий. Владелец и группа файлов - это основные атрибуты, определяющие уровень доступа к файлам в системе. В этой статье мы изучим, как использовать утилиту 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 переходить по каждой символической ссылке к каталогу, который встречается. Обычно вам не следует использовать эти параметры, поскольку это может привести к сбоям в работе вашей системы или создать угрозу безопасности.