Linux - Как рекурсивно выполнить chmod папку?

41

Как я могу рекурсивно chmod все внутри папки?

Например, у меня есть папка, varкоторая содержит много подпапок и файлов.

Как я могу применить chmod 755 рекурсивно к этой папке и всему ее содержимому?

черный
источник

Ответы:

66

Пожалуйста, обратитесь к руководству ( man chmod):

-R, --recursive
change files and directories recursively

chmod -R 755 /path/to/directory будет выполнять то, что вы хотите.

Тем не мение…

  1. Вы обычно не хотите 755 всех файлов ; они должны быть 644, так как они часто не должны быть исполняемыми. Следовательно, вы можете сделать find /path/to/directory -type d -exec chmod 755 {} \;только для изменения разрешений каталога. Используйте -type fи, chmod 644чтобы применить разрешения к файлам.

  2. Это перезапишет любые существующие разрешения. Это не очень хорошая идея - для /varэтой папки уже установлены правильные разрешения, установленные системой. Например, для некоторых каталогов /varтребуется 775 разрешений (например, /var/log).

Поэтому, прежде чем делать sudo chmod- особенно в системных папках - сделайте паузу и подумайте, действительно ли это необходимо.

slhck
источник
6
При добавлении битов прав доступа, заглавные буквы [augo]+Xподдерживаются только для добавления + x, если объект уже исполняемый.
Гравитация
Это не папка var из linux, а с моего сайта. Но все же хороший намек!
Черное
1
@ Чёрный Конечно, я просто хотел добавить большую оговорку. В частности, для веб-сайтов (большинство CMS, таких как WordPress или Drupal) этого хотят, права доступа к каталогам и файлам должны отличаться по соображениям безопасности, см., Например, здесь для WordPress.
Slhck
@ Grawity - я не могу поверить, что я не заметил +Xраньше: это так полезно с несколькими файлами, будь то из -R, маска файла, или при обработке файлов, найденных с find. Действительно полезный совет.
AFH