Утилиты CLI: команды chown и chgrp
Команды chown
и chgrp
служат для изменения атрибутов принадлежности файла -- хозяину и группе: очевидно, что все, не являющиеся хозяином файла, и не входящие в группу, к которой файл приписан, автоматически попадают в категорию прочих (other
).
Формат команды chown
-- следующий:
$ chown newowner filename
По соображениям безопасности, достаточно очевидным, изменить хозяина файла может только суперпользователь. Пользователь обычный в подавляющем большинстве случаев автоматически становится хозяином всех им созданных (и скопированных) файлов, и избавиться от этого бремени, как и от родительского долга, не в состоянии.
А вот изменить групповую принадлежность своих файлов (т.е. тех, в атрибутах принадлежности он прописан как хозяин) пользователь вполне может. Команда:
$ chgrp newgroup filename
от его лица припишет файл filename
к группе newgroup
. Однако и здесь есть ограничение -- результат будет достигнут, только если хозяин файла является членом группы newgroup
, иначе опять придется прибегнуть к полномочиям администратора.
Можно также одной командой сменить (только суперпользователю, конечно) и хозяина файла, и группу, к которой он приписан. Делается это так:
$ chown newowner:newgroup filename
Или так:
$ chown newowner.newgroup filename
Где, понятное дело, под именем newowner
выступает новый хозяин файла, а под именем newgroup
-- новая группа, к которой он приписан.
В обеих командах вместо имени хозяина и группы могут фигурировать их численные идентификаторы (UID и GID, соответственно). Это имеет смысл, например, при совместном использовании файлов в разных операционных системах. Так, даже единственный пользователь имя_рек в каком-либо варианте Linux и в BSD по умолчанию имеет разные идентификаторы, и чтобы сделать его владельцем неких файлов и там, и там, именно численный идентификатор должен фигурировать в качестве параметра команды chown
.
Для команд chown
и chgrp
поддерживается один и тот же набор опций. Наиболее интересны (и важны) две из них. Опция --reference
позволяет определить хозяина файла и его принадлежность к группе не явным образом, а по образу и подобию файла, имя которого выступает в качестве значения опции. Так, команда
$ chown --reference=ref_filename filename
установит для файла filename
те же атрибуты принадлежности (хозяина и группу), что были ранее у файла ref_filename
. Это весьма полезно при массовой реатрибуции файлов, полученных из разных источников.
Опция -R
(или --recursive
) распространяет действие обеих команд не только на файлы текущего каталога (излишне напоминать, что в качестве аргументов команд могут использоваться маски типа *
, *.ext
, name.*
и т.д.),
но и на все вложенные подкаталоги, вместе с входящими в них файлами. То есть пользователь может поменять групповую принадлежность всех файлов в своем домашнем каталоге одной командой:
$ chgrp -R newgroup ~/*
А суперпользователь тем же способом может установить единообразные атрибуты принадлежности "по образцу" для всех компонентов любого каталога:
$ chown -R --reference=ref_filename /somepath/somecat/*
Содержание . .