
Команда 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
Вместо имени пользователя можно использовать числовой идентификатор пользователя (UID). В следующем примере владелец файла с именем file2 будет изменен на нового владельца с UID 1000 :
chown 1000 file2
Если имя пользователя содержит числовой владелец, право собственности будет передано этому имени. Чтобы избежать этого, добавьте к идентификатору префикс + :
chown 1000 file2
Как изменить владельца и группу файла
Чтобы изменить владельца и группу файла, используйте команду 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
Еще одна команда, которую можно использовать для изменения группы владельцев файлов, — chgrp .
Как изменить владельца символических ссылок
Если рекурсивная опция не используется, команда 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 обойти каждую обнаруженную символическую ссылку на каталог. Обычно эти опции не следует использовать, так как это может привести к сбою системы или создать угрозу безопасности.
Использование справочного файла
Параметр --reference=ref_file позволяет изменить владельца пользователя и группу указанных файлов на тех же, что и у указанного файла-ссылки ( ref_file ). Если файл-ссылка представляет собой символическую ссылку, chown будет использовать пользователя и группу целевого файла.
chown --reference = REF_FILE FILE
Например, следующая команда назначит права пользователя и группы владельца файла file1 файлу file2
chown --reference=file1 file2
Заключение
chown — это утилита командной строки Linux/UNIX для изменения владельца файла и группы.
Чтобы узнать больше о команде chown , посетите страницу руководства chown или введите man chown в терминале.
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства