zaLinux.ru

Как пользоваться командой 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, за исключением того, что у неё меньше опций.


Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *