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

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

Восьмеричное представление прав

В прошлом уроке рассматривались базовые принципы работы с системой прав Linux. Мы узнали, что получить текущие права файлов и директорий можно с помощью команды ls и её опции -l. Результат выполнения содержит примерно такой участок «rwxrw-rw-». Это текстовое представление прав доступа, разделенное на три сегмента по три буквы.

Сегменты отвечают за права владельца, группы и остальных пользователей. Буквы означают следующее: r — разрешение на чтение файла, w — возможность изменения, x — право выполнения файла как программы, - - прочерк говорит о запрете действия. В Linux помимо буквенной записи зачастую используется и числовая.

Числовая запись прав доступа представляется в восьмеричной системе счисления. Она может показаться сложной для понимания, однако на практике оказывается более удобной. Такой подход подразумевает, что все права можно записать всего тремя числами. Каждое из них, как и в предыдущем случае, отвечает за права владельца, группы и остальных пользователей. Число формируется как сумма величин: 4 — право на чтение, 2 — право на запись, 1 — разрешение на выполнение как программы.

Таким образом, если мы хотим дать владельцу неограниченные права, группе право на чтение и редактирование, а всем остальным запретить доступ полностью, можно использовать две формы записи: «rwxrw----» и «760».

Изменение прав доступа

В Linux есть универсальная команда chmod, работающая как с числовой записью прав, так и буквенной. В случае буквенного представления общий вид использования команды выглядит как «chmod [ugo][+-=][rwx] имя_файла». Квадратные скобки, говорят об опциональности параметров.

Первые квадратные скобки определяют, для кого изменяется право доступа: u — владелец файла, g — группа, o — остальные пользователи. Вторые квадратные скобки описывают возможные действия: + - добавление права, - - удаление права, = - использование точно заданных значений. Содержимое третьих скобок мы разбирали в начале урока.

#уберем все права для владельца, группы и остальных
ls -l ~/temp-file.txt
-rw-rw-r-- 1 user user 0 июл 18 2016 temp-file.txt

chmod ugo-rwx temp-file.txt
ls -l ~/temp-file.txt
---------- 1 user user 0 окт 17 22:36 temp-file.txt


#разрешим владельцу читать и изменять
chmod u+rw temp-file.txt
ls -l ~/temp-file.txt
-rw------- 1 user user 0 окт 17 22:36 temp-file.txt


#разрешим группе и остальным читать и выполнять
chmod go+rx temp-file.txt
ls -l ~/temp-file.txt
-rw-r-xr-x 1 user user 0 окт 17 22:36 temp-file.txt


#используем жесткую установку правил. Обратите
# внимание на исчезновение права выполнения
chmod go=r temp-file.txt
ls -l ~/temp-file.txt
-rw-r--r-- 1 user user 0 окт 17 22:36 temp-file.txt

Использование восьмеричной записи при изменении прав доступа аналогично буквенной. В общем виде команду можно записать как «chmod [0-7][0-7][0-7] имя_файла». Каждая квадратная скобка определяет единственное число от 0 до 7.

#назначение прав с помощью числовой записи
chmod 764 temp-file.txt
ls -l ~/temp-file.txt
-rwxrw-r-- 1 user user 0 окт 17 22:36 temp-file.txt

Если вам нужно поменять права для нескольких файлов, используйте механизмы постановки и опцию -R. Подстановка обеспечит обработку всех файлов, попавших под заданный шаблон, а за счет опции -R поиск будет продолжен и во вложенных директориях.

Заметка
Команда chmod также изменяет права доступа для директорий. При рекурсивном назначении и использовании механизмов подстановки будьте внимательны. Задавая шаблон соответствия, исключайте возможность совпадений с нежелательными файлами или директориями.

Изменение группы и владельца

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

cat /etc/group
user:x:1000:
sambashare:x:128:user
nm-openvpn:x:131:
memcache:x:132:
mysql:x:129:user
...

В Linux для изменения группы используется команда chgrp. Первым параметром она принимает имя или идентификатор группы, а вторым имя файла или директории. Изменения могут применяться сразу к нескольким файлам, аналогично команде chmod, за счет механизмов подстановки и опции -R.

Заметка
chgrp изменит права файла или директории только в том случае, если пользователь, вызвавший команду на выполнение, сам состоит в указанной группе.

Изменение владельца файла происходит с помощью команды chown. В общем виде вызов команды можно записать как «chown владелец:группа имя_файла». Как вы могли заметить, команда chown может устанавливать и группу файла, если указать её имя после имени нового владельца. При этом имя пользователя должно быть отделено от группы двоеточием «:».

#изменение группы специальной функцией
chgrp mysql ~/temp-file.txt
ls -l ~/temp-file.txt
-rwxrw-r-- 1 user mysql 0 окт 17 22:36 temp-file.txt


#изменение владельца и группы одновременно
sudo chown mysql:docker ~/temp-file.txt
ls -l ~/temp-file.txt
-rwxrw-r-- 1 mysql docker 0 окт 17 22:36 temp-file.txt

Заметка
Если у вас нет прав на редактирование файла, единственно возможным способом осуществить изменение его группы или пользователя является выполнение команды chown от лица администратора.

Последние публикации