Как я могу рекурсивно изменить права доступа к файлам и каталогам?
У меня на локальном компьютере установлена Ubuntu с помощью apache / php / mysql.
Теперь у меня есть каталог в /var/www - внутри которого у меня есть несколько моих текущих проектов. Я также работаю с opensource ( drupal, magento, sugarcrm).
Проблема, с которой я сталкиваюсь, заключается в изменении разрешения файла с помощью терминала. Иногда мне нужно изменить разрешение всей папки и ее последующих подпапок и файлов. Я должен индивидуально изменить, используя
sudo chmod 777 foldername
Как я могу сделать это рекурсивно.
Кроме того, почему я всегда должен делать это 777, я пробовал 755 для папок и 644 для файлов, но это не сработает.
5 ответов
Просто добавьте -R
возможность рекурсивного изменения прав доступа к файлам. Например, рекурсивно добавить права на чтение и запись для владельца и группы на foldername
:
chmod -R ug+rw foldername
Разрешения будут как 664 или 775.
Установка разрешений на 777 крайне не рекомендуется. Вы получаете ошибки в Apache или в вашем редакторе относительно разрешений, потому что apache работает под другим пользователем (www-data
) чем ты.
Если вы хотите написать /var/www
, добавь себя в www-data
группируйте и устанавливайте права доступа umask+ соответственно.
- Добавьте себя в
www-data
группа:sudo adduser $USER www-data
- Изменить владельца файлов в
/var/www
:sudo chown -R www-data:www-data /var/www
- Измените umask, чтобы вновь созданные файлы Apache предоставляли права на запись и группе. добавлять
umask 007
в/etc/apache2/envvars
, - Предоставь себя (технически, группа
www-data
) разрешения на запись:sudo chmod -R g+w /var/www
,
Грубая сила:
sudo find foldername -exec chmod a+rwx {} ";"
Что не работает? Более конкретно!
sudo find foldername -type d -exec chmod 755 {} ";"
sudo find foldername -type f -exec chmod 644 {} ";"
Вам не нужно 777 для чего-либо. В худшем случае вам нужно изменить владельца определенных файлов и каталогов на пользователя "www-data".
sudo find /var/www -type d -print0 | xargs -0 chmod 755
sudo find /var/www -type f -print0 | xargs -0 chmod 644
sudo find /var/www/some/subset -print0 | xargs -0 chown www-data:www-data
Если вы используете метод членства в группах Лекенштейна, измените 755 на 775 и 644 на 664, соответственно, выше, а затем принудительно закрепите группу:
sudo find /var/www/some/subset -type d -print0 | xargs -0 chmod g+s
Вы можете изменить подпапки и файлы на Nautilus. Как вы можете видеть на изображении ниже. Чтобы иметь разрешения для кнопок, вы можете включить опцию в Ubuntu Tweak.
Если вы хотите, чтобы все ваши файлы были доступны для чтения всему миру (т. Е. Это просто статический набор файлов / изображений HTML), используйте следующую команду:
chmod -R a+r <base directory>
Это будет рекурсивно просматривать все файлы и подкаталоги и добавлять к ним разрешение на чтение.
ВНИМАНИЕ: Не делайте этого для исполняемых файлов! Только файлы, которые должны быть видны всем.