LINUX.ORG.RU
ФорумAdmin

Рекурсивно изменить права доступа


0

0

Подскажите, как рекурсивно изменить права доступа к каталогу XXX так, чтобы он сам и все его подкаталоги имели 755, а файлы 644? chmod -R 644 XXX меняет права и файлов и каталогов скопом. В мане chmod'а не нашел. Скрипт что ли писать?

anonymous

ну первое попавшееся решение:

find XXX -name "*" -type (не помню что для dir, man find на предмет type) -exec chmod 755 {} \;
find XXX -name "*" -type (тоже самое, но для файла) -exec chmod 655 {} \;

anonymous
()

Чуть проще find XXX -type d -exec chmod 755 {} \; find XXX -type f -exec chmod 644 {} \;

anonymous
()

ну дык а я что сказал ;)

anonymous
()

man chmod на предмет разницы между x и X, я делал так:
#chmod -R 644 Каталог; chmod -R +X Каталог

anonymous
()
Ответ на: комментарий от anonymous

> man chmod на предмет разницы между x и X, я делал так:
> #chmod -R 644 Каталог; chmod -R +X Каталог

Если выполнять от обычного пользователя, то после выполнения первой команды войти в каталог будет нельзя и рекурсия не получится - сменятся атрибуты только у самого каталога, но не у подкаталогов. Я делаю следующим образом:

chmod -R u=rw,go=r,a+X каталог

В документации я этого не нашёл, но легко было догадаться, что несколько команд подряд просто будут выполнены последовательно. В данном случае сначала для владельца устанавливаются атрибуты "rw" (а остальные атрибуты для него обнуляются, то есть "x" уже нет), затем для группы и остальных устанавливается только атрибут "r" (остальные аналогичным образом обнуляются), а затем для всех добавляется атрибут выполнения, но только в случае, если он должен быть, то есть если обрабатывается каталог (с файлов атрибут был снят предыдущими директивами).

askh ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.