Как я могу рекурсивно изменить права доступа к файлам и каталогам?

У меня на локальном компьютере установлена ​​Ubuntu с помощью apache / php / mysql.

Теперь у меня есть каталог в / var / www - внутри которого у меня есть несколько моих текущих проектов. Я также работаю с открытым исходным кодом (drupal, magento, sugarcrm).

Проблема, с которой я сталкиваюсь, заключается в изменении разрешения файла с помощью терминала. Иногда мне нужно изменить разрешение всей папки и ее последующих подпапок и файлов. Я должен индивидуально изменить, используя

sudo chmod 777 foldername

Как я могу сделать это рекурсивно.

Также, почему я всегда должен это делать 777 , я пробовал 755 для папок и 644 для файлов, но это не сработает. 115]

67
задан 21 September 2013 в 17:32

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.
0
ответ дан 21 September 2013 в 17:32

Вы можете изменить подпапки и файлы на Nautilus. Как вы можете видеть на изображении ниже. Чтобы разрешить использование кнопок, вы можете включить опцию в Ubuntu Tweak.

enter image description here

0
ответ дан 21 September 2013 в 17:32

Если вы хотите, чтобы все ваши файлы были доступны для чтения всему миру (т. Е. Это просто статический набор файлов / изображений HTML), используйте следующую команду:

chmod -R a+r <base directory>

Это будет рекурсивно через все файлы & amp; подкаталоги и добавить разрешение на чтение для них.

ВНИМАНИЕ : Не делайте этого с исполняемыми файлами! Только файлы, которые должны быть видны всем.

0
ответ дан 21 September 2013 в 17:32

Вам не нужно 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
0
ответ дан 21 September 2013 в 17:32

bruteforce:

sudo find foldername -exec chmod a+rwx {} ";"

Что не работает? Будьте более конкретны!

sudo find foldername -type d -exec chmod 755 {} ";"
sudo find foldername -type f -exec chmod 644 {} ";"
0
ответ дан 21 September 2013 в 17:32

Другие вопросы по тегам:

Похожие вопросы: