2 Stimmen

Wie kann ich meinem Apache-Benutzer erlauben, in das Benutzerverzeichnis hochzuladen, wenn ich Apache auf EC2 verwende?

Ich habe eine Amazon EC2-Instanz eingerichtet. Standardmäßig läuft mein Apache als Benutzer apache der Gruppe apache .

Ich habe einen neuen ftp-Benutzer erstellt test und lud meine Dateien auf /home/test/public_html . Ich habe dann den virtuellen Host konfiguriert DocumentRoot auf mein Projekt verweisen, das sich in /home/test/public_html .

Wenn das Verzeichnis im Besitz des Benutzers test Das Hochladen in das Projekt wird verweigert: Es wird ein Berechtigungsfehler angezeigt. Wenn ich den Eigentümer des Verzeichnisses auf apache funktioniert es.

Wie kann die apache Benutzer Superuser-Rechte, damit er hochladen kann, ohne den Eigentümer des Verzeichnisses zu ändern?

4voto

Michael Gisbers Punkte 764

Es ist immer das gleiche Problem. Upload mit Benutzer ftp und kein Zugriff für Benutzer apache.

Ich habe dieses Problem mit filesystems extended acls gelöst.

Es ist möglich, einen "Standard"-Benutzer und/oder eine "Standard"-Gruppe für neu erstellte Dateien festzulegen.

Was Sie tun müssen:

  • fügen Sie 'acl' zu Ihren Einhängeoptionen für das gewünschte Dateisystem hinzu. (Bitte prüfen Sie vorher, ob Ihr Kernel für posix acl konfiguriert ist!)
  • Verwenden Sie den Befehl 'setfacl', um die Berechtigungen zu setzen (je nach Distribution müssen Sie eventuell vorher ein Paket installieren, das 'setfacl' enthält).

Exemple :

Erstes eigenes ftp für Benutzer, damit Uploads durchgeführt werden können

# 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 ..

Als Nächstes setzen Sie den Standard für den Benutzer 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

Nachdem Sie Dateien oder Verzeichnisse in dieses Verzeichnis gelegt haben, werden Sie sehen, dass Sie mehrere Zugriffsrechte auf diese haben. Denken Sie aber daran, dass diese Rechte nur für neue Dateien gelten, nicht für bereits vorhandene.

# 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--

Wenn Sie 'ls -l' verwenden, sehen Sie ein '+' hinter den Berechtigungen, um sich über acl-Rechte zu informieren:

# 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

1voto

fgysin Punkte 10714

Ich würde es auf jeden Fall vermeiden, dem Apache-Benutzer Root-Rechte zu geben.

Dies wäre eine ziemlich ernste Angelegenheit Sicherheitsproblem : Gerade weil der Server potentiell (anfälliger) ist, legt man normalerweise einen speziellen Benutzer für ihn an (hier den 'apache'-Benutzer), bei dem man die Rechte auf die beschränkt, die man für den Serverbetrieb wirklich braucht.

Wenn es Probleme damit gibt, dass der Apache-Benutzer nicht alle Rechte hat Berechtigungen sollten Sie sie lösen, indem Sie die Eigentümerschaft der entsprechenden Dateien auf den Benutzer apache ändern,

chown apache:apache <filename>

oder indem man sie für mehrere Benutzer lesbar/schreibbar/ausführbar macht, z. B. durch

chmod 777 <filename>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X