Как проверить, какую группу Apache я могу использовать для записи на веб-сервере?

13

Я пытаюсь заставить Wordpress работать. В настоящее время у меня есть это сообщение об ошибке:

Could not create directory. /var/www/html/wp-content/upgrade/theme_name

при попытке загрузить тему. Это разрешения, установленные для/var/www/html/wp-content/upgrade/

drwxrwxr-x 3 ec2-user apache 4096 Jun 21 00:30 upgrade

chmod 777 upgradeделает ошибку исчезнуть Но это не считается лучшей практикой. Тем не менее, я думаю, что это должно работать тоже ... почему бы и нет?

Я предполагаю, что веб-сервер не может быть включен вышеупомянутыми разрешениями. Какую группу я должен использовать, чтобы веб-сервер мог писать?

(Моя установка - Amazon EC2, Amazon Linux AMI с httpd)

Джефф Шаллер
источник

Ответы:

16

Я ничего не знаю об Amazon EC2, но вы должны быть в состоянии:

  1. Получите имя пользователя, на котором запущен Apache, с помощью команды, подобной этой:

    ps aux | grep apache # The username should be in the first column.
    
  2. Извлеките группы, в которые входит этот пользователь, с помощью groups(1)команды:

    groups [USERNAME]
    
rahmu
источник
Первый столбец - apache, и группы apache возвращают apache: apache. Строка из первой команды выглядит так: apache 11171 0,0 3,4 39984 21516? S Jun20 0:02 / usr / sbin / httpd
1
Пользователь apache явно имеет права на запись в каталог. Вы говорите, что chmod 777решает проблему, поэтому я предполагаю, что вы используете другого пользователя для загрузки своих тем. Я не очень хорошо знаю Wordpress. В соответствии с этим ответом попробуйте сменить владельца на пользователя www-data.
Рахму
Спасибо, что нашли время, чтобы посмотреть статью и все. Это был действительно другой пользователь, так как я понял, что Wordpress использует FTP для своей работы. Я узнал этого пользователя по тому, что было предложено ниже, а затем добавил к нему группу apache, обнаруженную на шаге 1. Это решило это.
2

Вы можете попытаться использовать следующий метод командной строки, чтобы узнать имена вашей группы Apache:

WWW_GROUP=`ps axo user,group,comm | egrep '(apache|httpd)' | grep -v ^root | cut -d\  -f 2| uniq`
echo Apache group is: $WWW_GROUP

Чтобы получить пользователя, проверьте: Как определить пользователя Apache из командной строки?

kenorb
источник
1

Обновление chmod 777 устраняет ошибку.

Что ж, в этом случае ls -ld /var/www/html/wp-content/upgrade/theme_nameследует раскрыть учетные данные создателя, которые вы можете использовать для точного предоставления доступа.

И лучше использовать 1777(как для /tmp), так как, по крайней мере, это гарантирует, что только владелец файла сможет отсоединить его.

poige
источник
1
Сделай так, чтобы ошибка ушла! Интересный подход к решению проблем. Это не решение, это ложь.
Ихароб
Что вы называете «ложью» - цитируя оригинальный авторский текст? :) или предложение хотя бы использовать 1777 вместо 777? :) или выяснить право собственности создателя и использовать его для «точного предоставления доступа»?
Пойдж
Это ложь для системы, потому что 777это не правильно в любом контексте, который я знаю.
Ихароб