Введение
Команда chown позволяет изменить пользователя и/или группу, владеющую определенным файлом, каталогом или символической ссылкой.
В Linux все файлы связаны с владельцем и группой, и им назначаются права доступа и разрешений для владельца файла, членов группы и других лиц.
В этом уроке мы покажем, как использовать команду chown на практических примерах.
Используйте команду chown
Прежде чем мы увидим, как использовать команду chown, давайте начнем с основного синтаксиса.
Выражения команды chown имеют следующий вид:
chown [OPTIONS] USER[:GROUP] FILE(s)
ПОЛЬЗОВАТЕЛЬ — это имя пользователя или идентификатор пользователя (UID) нового владельца. ГРУППА — это имя новой группы или идентификатор группы (GID). ФАЙЛ(ы) — это имя одного или нескольких файлов, каталогов или ссылок. Перед числовыми идентификаторами должен стоять символ « +».
- ПОЛЬЗОВАТЕЛЬ - Если указан только пользователь, указанный пользователь станет владельцем указанных файлов, группа владельцев не изменится.
- ПОЛЬЗОВАТЕЛЬ: - Когда за именем пользователя следует двоеточие " : " и имя группы не назначено, пользователь станет владельцем файлов, а группа-владелец файлов будет изменена на группу, связанную с пользователем.
- ПОЛЬЗОВАТЕЛЬ: ГРУППА - Если указаны и пользователь, и группа (без пробела между ними), владельцем файлов станет указанный пользователь, а группа владельцев изменится на указанную.
- : ГРУППА — если пользователь не указан, а группе предшествует двоеточие « : », только группа, владеющая файлами, изменяется на указанную группу.
- : Если указан только символ " : ", без указания пользователя и группы, никаких изменений не производится.
По умолчанию, в случае успеха, chown ничего не выводит.
Используйте команду ls -l, чтобы определить, кому принадлежит файл или к какой группе он принадлежит:
ls -l filename.txt
-rw-r--r-- 12 noviello noviello 1239291 Aug 8 03:04 filename.txt
|[-][-][-]- [------] [---]
| |
| +-----------> Group
+-------------------> Owner
Только root или пользователь с привилегиями sudo могут изменить группу владельцев файла.
Изменить владельца файла
Чтобы изменить владельца файла, используйте команду chown, за которой следует имя пользователя нового владельца и целевой файл в качестве аргумента:
chown USER FILE
Например, следующая команда изменит владельца файла с именем file1 на нового владельца с именем noviello:
chown noviello file1
Чтобы изменить владельца нескольких файлов или каталогов, укажите их в виде списка, разделенного пробелами. Следующая команда изменяет владельца файла с именем file1 и каталога dir1 на нового владельца с именем noviello:
chown noviello file1 dir1
Вместо имени пользователя можно использовать числовой идентификатор пользователя (UID). Следующий пример изменит владельца файла с именем file2 на нового владельца с UID 1000:
chown 1000 file2
Если пользователь noviello имеет в качестве UID «1000», а имя пользователя другого пользователя — «1000», но имеет UID 1002, использование параметра « + » однозначно меняет владельца на noviello.
chown +1000 file2
Изменить владельца и группу файла
Чтобы изменить и владельца, и группу файла, используйте команду chown, за которой следует новый владелец и группа, разделенные двоеточием « : » без промежуточных пробелов, и целевой файл.
chown USER:GROUP FILE
Следующая команда изменит владельца файла с именем file1 на нового владельца с именем noviello и группу пользователей:
chown noviello:users file1
Если вы опустите имя группы после двоеточия " : ", группа файла изменится на группу доступа указанного пользователя:
chown noviello: file1
Изменить группу файла
Чтобы изменить только группу файла, используйте команду chown, за которой следует двоеточие « : », имя новой группы (без пробела между ними) и целевой файл в качестве аргумента:
chown:GROUP FILE
Следующая команда изменит группу владельцев файла с именем file1 на www-data:
chown:www-data file1
Другая команда, которую вы можете использовать для изменения группы владельцев файла, — chgrp.
Изменить владельца символических ссылок
Когда параметр 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
Использование справочного файла
Опция --reference = ref_file позволяет вам изменить группу пользователей и владельцев определенных файлов, чтобы они совпадали с указанным эталонным файлом ( ref_file ). Если указанный файл является символической ссылкой, chown будет использовать пользователя и группу целевого файла.
chown --reference=REF_FILE FILE
Например, следующая команда назначит группу и пользователя, владеющего файлом1, файлу2.
chown --reference=file1 file2
Вывод
chown — это утилита командной строки Linux/UNIX для изменения пользователя и/или группы, которой принадлежит файл.
Чтобы узнать больше о команде chown, введите следующую команду:
man chown