Как пользоваться командой chown для смены владельца и группы файла в Linux

Права доступа к файлам и директориям в Linux


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


  • чтение
  • запись
  • выполнение

Эти три свойства можно настроить отдельно для:
  • пользователя (владельца файла)
  • группы
  • всех остальных


То есть к примеру для владельца файла можно установить право чтения, записи и выполнения файла; для этого же файла для группы можно установить только право чтения; а для всех остальных можно установить полный запрет доступа.



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



Права доступа в Linux не меняются автоматически. Это означает, что если вы скопировали из директории /root файл, принадлежащий пользователю root в папку другого пользователя, то это не означает, что файл меняет владельца и/или пользователь получает права записи в этот файл если ранее у него таких прав не было.



Каждый пользователь может быть в одной или более группах.


Команда chown


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



chown [ОПЦИИ] [ВЛАДЕЛЕЦ][:[ГРУППА]] ФАЙЛ…


chown может поменять владельца файла, либо группа владельцев, либо оба этих значения.



bob

Меняет владельца файла с текущего на пользователя bob.

bob:users

Меняет владельца файла с текущего владельца на пользователя bob и меняет группу владельцев на группу users.

:admins

Меняет группу владельцев на группу admins. Владелец файла не меняется.

bob:

Меняет владельца файла с текущего на владельца с именем пользователя bob и меняет группу владельцев на группу, с которой совершил вход пользователь bob — обычно это основная группа пользователя.


Предположим, у нас есть два пользователя: root который имеет доступ к привилегиям суперпользователя и mial, у которого их нет. Пользователь root хочет скопировать файл из его домашней директории в домашнюю директорию пользователя mial. Поскольку пользователь root хочет, чтобы mial был способен отредактировать этот файл, root меняет владельца скопированного файла с root на mial:



cd /home/mial/

sudo cp /root/myfile.txt .

sudo ls -l /home/mial/myfile.txt
-rw-r--r-- 1 root root 0 фев 29 15:33 /home/mial/myfile.txt

sudo chown mial: /home/mial/myfile.txt

sudo ls -l /home/mial/myfile.txt
rw-r--r-- 1 mial users 0 фев 29 15:33 /home/mial/myfile.txt





Здесь мы видим, что пользователь root копирует файл из своей домашней директории в директорию пользователя mial. Затем root меняет владельца файла с root (результат использования sudo) на mial. Использование двоеточия без указания имени группы также меняет группу владельцев на основную группу пользователя mial.


Как поменять владельца только для файлов, с определённым владельцем или группой владельцев


Возможно ситуация, когда в директорию, где уже находились файлы, скопировали несколько файлов и нужно изменить владельца и/или группу только для этих файлов, а остальные файлы оставить нетронутыми. В этом случае для фильтрации применяется опция --from=ТЕКУЩИЙ_ВЛАДЕЛЕЦ:ТЕКУЩАЯ_ГРУППА. Эта опция изменяет владельца и/или группу каждого файла только если текущий владелец и/или группа совпадают с указанными. Как группа, так и владелец могут быть опущены; в этом случае совпадение для данного атрибута не обязательно.


Как копировать значения владельцев и группы владельцев


Если вам нужно скопировать значения владельцев и группы владельцев одного файла на другой файл, то используйте опция --reference=ФАЙЛ_ОБРАЗЕЦ. В этом случае вместо указанных значений ВЛАДЕЛЕЦ:ГРУППА будут использоваться владелец и группа ФАЙЛА_ОБРАЗЦА.


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


Для рекурсивного изменения владельца и/или группы владельцев используйте опцию -R.



Следующие параметры влияют на способ обхода дерева каталогов при заданном параметре -R. Если указано несколько этих параметров, действует только последний.



-H



если аргумент командной строки является символьной ссылкой на каталог, перейти по ней



-L



переходить по любой встреченной символьной ссылке на каталог



-P




не переходить по символьным ссылкам (по умолчанию)


Программа chgrp для смены группы владельцев


В более старых версиях Unix команда chown изменяла только владельца файла, а не группы. Для этого была использована отдельная команда, chgrp. Это работает почти так же, как chown, за исключением того, что у неё меньше опций.


Добавить комментарий

Автору будет очень приятно получить обратную связь.

Комментариев 0