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

55

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

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

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

sudo chmod 777 foldername

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

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

    
задан Nikhil 16.03.2011 в 15:45
источник

5 ответов

77

Просто добавьте параметр -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 .
ответ дан Lekensteyn 16.03.2011 в 16:06
источник
20

брутфорс:

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

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

sudo find foldername -type d -exec chmod 755 {} ";"
sudo find foldername -type f -exec chmod 644 {} ";"
    
ответ дан user unknown 16.03.2011 в 16:05
4

Вам ничего не нужно 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

Если вы используете метод членства в группе Lekensteyn, замените 755 на 775 и 644 на 664 соответственно выше, а затем наложите групповую липкость:

sudo find /var/www/some/subset -type d -print0 | xargs -0 chmod g+s
    
ответ дан Kees Cook 17.03.2011 в 08:02
3

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

    
ответ дан Alfredo Hernández 16.03.2011 в 16:12
0

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

chmod -R a+r <base directory>

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

ПРЕДУПРЕЖДЕНИЕ . Не делайте этого для кода, который выполняется! Только файлы, которые должны быть видны всем.

    
ответ дан Ryan Shillington 26.01.2015 в 18:46