Права доступа к файлам и директориям в 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, за исключением того, что у неё меньше опций.
Связанные статьи:
- Команда chmod: как поменять права доступа к файлам и директориям (100%)
- Какие есть полезные инструменты с интерфейсом командной строки для системных администраторов Linux (50%)
- PhotoRec: восстановление удалённых и потерянных фотографий и файлов на картах памяти и жёстких дисках (50%)
- Как восстановить удалённый файл в Linux (50%)
- 10 полезных примеров команды du для определения, сколько места занимают файлы и директории (50%)
- Очень медленная работа SSD в Linux. Как проверить и включить TRIM в Linux (РЕШЕНО) (RANDOM - 27.5%)