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

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

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

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

sudo chmod 777 foldername

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

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

Просто добавьте -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 {} ";"

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

enter image description here

Вам не должен быть нужен 777 ни для чего. В худшем случае вам нужно будет сменить владельца определенных файлов и каталогов на пользователя "www-data".

sudo find /var/www -type d -print0 | xargs -0 chmod 755sudo find /var/www -type f -print0 | xargs -0 chmod 644sudo 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

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

chmod -R a+r <base directory>

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

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