Поиск по сайту:

11 примеров команды Chown в Linux для изменения владельца файла


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

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

Право собственности представлено двумя объектами: пользователь и группа. Сочетание прав доступа и владения позволяет Linux эффективно реализовать механизм контроля доступа.

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

Синтаксис команды chown

Синтаксис команды chown следующий:

chown [OPTION]... [OWNER][:[GROUP]] [FILE-1] [FILE-2]...[FILE-N]

Теперь давайте разберемся с использованием команды chown на некоторых практических примерах в Linux.

1. Как узнать владельца файла

Самый простой способ найти владельца файла — использовать команду ls, которая выведет список пользователя и группу файла.

touch file-1.txt
ls -l file-1.txt 

В приведенном выше выводе мы видим, что файл принадлежит пользователю и группе tecmint. Эта информация представлена третьим и четвертым столбцами соответственно.

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

Команда chown позволяет нам изменить владельца файла. Давайте посмотрим на его использование, назначив пользователя narendra владельцем файла:

sudo chown narendra file-1.txt

Теперь давайте проверим, что право собственности на файл изменилось:

ls -l file-1.txt 

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

Подобно пользователю, мы также можем изменить групповое владение файлом с помощью команды chown. Итак, давайте установим групповое владение файлом для группы — narendra:

sudo chown :narendra file-1.txt

Важно отметить, что при изменении владельца группы мы должны использовать двоеточие (:) с именем группы.

Теперь давайте проверим групповое владение файлом:

ls -l file-1.txt

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

В предыдущих примерах мы использовали команду chown дважды. Сначала нужно изменить владельца пользователя, а затем изменить владельца группы. Однако мы можем изменить как пользователя, так и группу с помощью одной команды.

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

sudo chown tecmint:tecmint file-1.txt

В этом примере мы использовали символ двоеточия (:) для разделения пользователя и группы. Значение перед двоеточием представляет пользователя, тогда как значение после двоеточия представляет группу.

Теперь давайте проверим владельца обновленного файла:

ls -l file-1.txt 

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

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

Однако мы можем переопределить поведение по умолчанию, используя параметр -h, как показано в следующем примере.

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

ln -s file-1.txt symlink
ls -l symlink 

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

sudo chown -h narendra:narendra symlink

Наконец, проверьте право собственности на символическую ссылку и ее ссылочный файл:

ls -l symlink file-1.txt

6. Как передать право собственности на файл пользователю

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

sudo chown -h --from narendra:narendra tecmint:tecmint symlink

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

Теперь давайте проверим обновленное право собственности на файл:

ls -l symlink

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

7. Как скопировать право собственности из другого файла

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

Сначала создайте новый файл и измените его владельца:

touch file-2.txt
sudo chown narendra:narendra file-2.txt

Теперь давайте проверим текущего владельца обоих файлов:

ls -l file-1.txt file-2.txt 

Затем установите владельца файла file-2.txt так же, как и file-1.txt, используя следующую команду:

sudo chown --reference=file-1.txt file-2.txt

Наконец, убедитесь, что право собственности успешно обновлено:

ls -l file-1.txt file-2.txt 

В приведенном выше выводе мы видим, что теперь оба файла имеют одинаковое право собственности.

8. Как рекурсивно изменить владельца каталога

Мы также можем использовать команду chown, чтобы изменить владельца каталога. Однако поведение команды по умолчанию нерекурсивно.

Это означает, что команда chown изменит владельца только входного каталога. Однако мы можем переопределить это поведение по умолчанию, используя параметр -R, как показано в следующем примере.

Сначала создайте каталог и два файла в нем:

mkdir dir-1
touch dir-1/demo-1.txt dir-1/demo-2.txt

Далее проверяем принадлежность каталога и его файлов:

ls -ld dir-1
ls -l dir-1

Затем рекурсивно измените владельца каталога и его файлов:

sudo chown -R narendra:narendra dir-1

Наконец, проверьте право собственности на каталог и его файлы:

ls -ld dir-1
ls -l dir-1

9. Как распечатать детали процесса команды Chown

По умолчанию команда chown ничего не печатает на терминале после смены владельца. Следовательно, до сих пор мы использовали опцию -l команды ls для проверки обновленного владельца.

Чтобы преодолеть это ограничение, мы можем включить подробный режим команды, которая печатает диагностику для каждого обработанного файла. Эта опция дает значимую информацию, когда мы используем ее с опцией -R:

Итак, давайте воспользуемся опцией -v команды, чтобы включить подробный режим:

sudo chown -Rv tecmint:tecmint dir-1

Теперь давайте проверим вывод команды:

10. Как подавить ошибки команды Chown

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

Однако иногда мы не хотим показывать эти сообщения об ошибках. В таких случаях мы можем использовать опцию -f команды для подавления сообщений об ошибках.

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

sudo chown -f narendra:narendra non-existing-file.txt
echo $?
1

Теперь посмотрим вывод команды:

Как мы видим, приведенная выше команда не показывает никаких ошибок. Однако команда сообщает об ошибке, используя ненулевое возвращаемое значение.

11. Как изменить идентификатор пользователя и группы файла

До сих пор мы использовали имена пользователей и групп для изменения владельца файла. Однако мы также можем использовать идентификаторы пользователя и группы для достижения того же результата.

Сначала используйте команду id, чтобы найти идентификатор пользователя и группы пользователя – narendra:

id narendra

Теперь давайте используем идентификатор пользователя и группы 1001 с командой chown:

ls -l file-1.txt
sudo chown 1001:1001 file-1.txt

Наконец, убедитесь, что право собственности успешно обновлено:

ls -l file-1.txt

В этой статье мы обсудили некоторые практические примеры использования команды chown. Эти примеры можно использовать в повседневной жизни, чтобы повысить производительность при работе с системами Linux.

Знаете ли вы какой-нибудь другой лучший пример команды chown в Linux? Поделитесь с нами своим мнением в комментариях ниже.