• Записи 162
  • Теги 66
  • Комментарии 330

Компьютерное

Рекурсивный chmod только для каталогов

Часто сталкивался с ситуацией, когда для каталогов нужно выставить права 755, а для файлов — 644. Обычно решал так:


$ chmod -R 644 ./

а далее проставлял 755 вручную для каталогов, но это неудобно, особенно при глубокой вложенности. Сегодня нашел другое решение: можно формировать список файлов с помощью find, а затем вызывать chmod с помощью xargs. Т.е. получаем:


$ chmod -R 755 ./
$ find ./ -type f -print | xargs chmod 644

Если требуется наоборот, выполнить команду только для каталогов, то после -type нужно указать d вместо f. Важно так же помнить про права доступа (т.е. если сначала поставить всем 644, а потом пытаться повысить каталогам до 755, могут начаться ошибки доступа).

6 комментариев:

Нет
WatchCat
0

chmod -R a-x+rX имя_каталога/

Будьте осторожны если в именах каталогов есть пробелы - может глючить,к счастью не фатально,просто что-то не обработается.

"Шаманское заклинание" подсказал один старый юниксоид лет двадцать назад.<br />
Нет
Владимир
0

Команды выше неправильные, так как каталоги с пробелами обработаны не будут. Надо так:

# каталоги (чтение и запись всем)
find ./Общедоступные -type d -exec chmod 777 "{}" \;
# файлы (чтение и запись всем)
find ./Общедоступные -type f -exec chmod 666 "{}" \;

4X_Pro
0

Ok, спасибо за информацию. Хотя меня и тот вариант устраивал вполне, т.к. я всячески избегаю пробелов и спецсимволов в именах файлов...

Нет
viktor
0

через xargx chmod намного быстрей работает, намного это примернов 100 раз.

Нет
MelaniT
0

выполнение, если файл является каталогом или уже имеет право на выполнение для какого-нибудь пользователя

Нет
Гость
0

Владимир написал(а):

Команды выше неправильные, так как каталоги с пробелами обработаны не будут. Надо так:


Огромное вам спасибо! Мне это очень помогло!
Написать комментарий


Задать вопрос