Как я могу разрешить моему пользователю apache загружать файлы в каталог пользователя при использовании Apache на EC2? - PullRequest
2 голосов
/ 26 ноября 2010

Я настроил экземпляр Amazon EC2.По умолчанию мой apache работает как пользователь apache из группы apache.

. Я создал нового пользователя ftp test и загрузил свои файлы в /home/test/public_html.Затем я настроил виртуальный хост DocumentRoot, чтобы он указывал на мой проект, находящийся в /home/test/public_html.

Когда каталог принадлежит пользователю test, загрузка в проекте запрещена: это дает ошибку разрешения,Если я изменю владельца каталога на apache, он будет работать.

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

Ответы [ 2 ]

3 голосов
/ 26 ноября 2010

Это всегда одна и та же проблема.Загрузка с пользователем ftp и отсутствие доступа для пользователя apache.

Я решил эту проблему с помощью расширенных acls файловых систем.

Возможно добавить пользователя и / или группу по умолчанию в новые сгенерированные файлы.

Что нужно сделать:

  • добавить «acl» в опции монтирования для желаемой файловой системы.(Пожалуйста, проверьте, настроено ли ваше ядро ​​для posix acl, прежде чем делать это!)
  • используйте команду 'setfacl' для установки разрешений (вам может потребоваться установить пакет, содержащий 'setfacl', прежде чем в зависимости от вашего дистрибутива.)

Пример:

Первый пользователь для ftp, так что загрузки могут быть сделаны

# chown ftp:ftp /var/www/server/htdocs
# ls -la /var/www/server/htdocs/
insgesamt 0
drwxr-xr-x  2 ftp      ftp  40 26. Nov 12:40 .
drwxrwxrwt 15 root     root  360 26. Nov 12:40 ..

Следующий набор по умолчанию для пользователя apache

# setfacl -d -m u:apache:rwx /var/www/server/htdocs
# setfacl -d -m g:apache:rwx /var/www/server/htdocs
# getfacl /var/www/server/htdocs
# file: /var/www/server/htdocs
# owner: ftp
# group: ftp
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:apache:rwx
default:group::r-x
default:group:apache:rwx
default:mask::rwx
default:other::r-x

После помещения файлов или каталогов в этот каталог вы увидите, что у вас есть несколько прав доступа к ним.Но имейте в виду, что эти права предоставляются только новым файлам, а не существующим один раз.

# getfacl /var/www/server/htdocs/test.txt

# file: /var/www/server/htdocs/test.txt
# owner: ftp
# group: ftp
user::rw-
user:apache:rwx                 #effective:rw-
group::r-x                      #effective:r--
group:apache:rwx                #effective:rw-
mask::rw-
other::r--

При использовании 'ls -l' после разрешений вы видите '+', чтобы сообщить о правах acl:

# ls -la /var/www/server/htdocs
insgesamt 0
drwxr-xr-x+  3 ftp      ftp   80 26. Nov 12:43 .
drwxrwxrwt  15 root     root 360 26. Nov 12:40 ..
drwxrwxr-x+  2 ftp      ftp   40 26. Nov 12:43 test
-rw-rw-r--+  1 ftp      ftp    0 26. Nov 12:43 test.txt
1 голос
/ 26 ноября 2010

Я бы любой ценой избежал предоставления пользователю apache привилегий root.

Это было бы довольно серьезной проблемой безопасности : именно потому, что сервер потенциально (более) уязвим, вы обычно делаетеспециальный пользователь для него (здесь пользователь «apache»), где вы можете указать привилегии только тем, которые действительно необходимы для запуска сервера.

Если есть проблемы с пользователем Apache, не имеющим всех прав права доступа вы должны решить их, изменив владельца соответствующих файлов на пользователя apache,

chown apache:apache <filename>

или сделав их доступными для чтения / записи / выполнения для большего числа пользователей, например, используя

chmod 777 <filename>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...