Изменение прав доступа только для файлов или для директорий на linux
Иногда возникает необходимость изменить права для всех директорий или файлов внутри заданной директории. Например, если в процессе извлечения файлов из архива проставляются неверные разрешения или по какой-либо другой причине.
Для решения данной задачи можно использовать команду find
совместно с exec chmod
или xargs chmod
. Вторая более предпочтительна, так как она производительнее. Именно ее мы и будем использовать.
Для изменения разрешений для всех файлов внутри директории /path/to/directory
на 644
необходимо выполнить следующую команду:
find /path/to/directory -type f -print0 | xargs -0 chmod 644
Аналогичная команда для выставления прав на директории:
find /path/to/directory -type d -print0 | xargs -0 chmod 755
Если есть необходимость выполнить команду от суперпользователя, то необходимо добавить sudo в обе части команды. В данном случае она преобразится в
sudo find /path/to/directory -type f -print0 | sudo xargs -0 chmod 644