February 3, 2011

Как рекурсивно массово установить chown на папки и файлы?

Предположим, нам необходимо рекурсивно установить пользователя-владельца some_user (принадлежащего к группе some_group) для всех подпапок и файлов, находящихся в некой директории /home/some_dir. Для этого воспользуемся командой chown, от англ. change owner — сменить владельца.

Заходим в целевую директорию:
cd /home/some_dir


Массово устанавливаем владельцем файлов пользователя some_user из some_group рекурсивно (флаг -R) для абсолюно всего, что лежит в текущей директории (маска *)
chown -R some_user:some_group *


О chmod написано здесь: Как рекурсивно массово установить chmod на папки и файлы?

5 comments:

Николай said...

Иногда лучше использовать конструкцию вида:
$ find . -type f -exec chown ИМЯ_ПОЛЬЗОВАТЕЛЯ {} \;
Чтобы присвоить нового владельца только для фалов (миную каталоги)

Anonymous said...

Не работает для скрытых файлов, имя которых начинается с точки (хотя хз, может это debian stable такой тормознутый). Сработала команда chown -R some_user:some_group .*

Webaliser said...

У меня тоже не сработала на имена с точки. Но все норм, маска .* прокатила

Unknown said...

Нельзя использовать маску .* для скрытых файлов. Это регулярка, а не просто символы. В результате смена владельца затронет так же все каталоги на уровень выше текущего!

Имхо, лучшее решение - подняться на уровень целевого каталога и выполнить процедуру оттуда

cd /home
chown -R some_user:some_group some_dir

Минус решения в том, что основной каталог тоже сменит владельца.

h15.org said...

Как-то куцо. Всё же тема прав в Linux более широкая. Тут и про пользователей надо рассказать и про права. Chown - малая часть. Чуть более содержательно: http://900913.ru/2017/05/09/prava-na-fayly-i-papki-v-linux-freebsd-i-macos/