2010-11-26 4 views
2

Ich habe eine Amazon EC2-Instanz eingerichtet. Standardmäßig läuft mein Apache als Benutzer apache der Gruppe apache.Wie kann ich meinen Apache-Benutzer in das Benutzerverzeichnis hochladen lassen, wenn Apache auf EC2 verwendet wird?

Ich habe neue FTP-Benutzer test erstellt und meine Dateien auf /home/test/public_html hochgeladen. Ich habe dann den virtuellen Host DocumentRoot so konfiguriert, dass er auf mein Projekt zeigt, das sich in /home/test/public_html befindet.

Wenn das Verzeichnis dem Benutzer test gehört, wird das Hochladen im Projekt verweigert: Es wird ein Berechtigungsfehler angezeigt. Wenn ich den Besitzer des Verzeichnisses zu apache ändere, funktioniert es.

Wie kann die apache Benutzer Superuser Rechte geben, damit es hochladen, ohne den Besitzer des Verzeichnisses zu ändern?

Antwort

3

Es ist immer das gleiche Problem. Upload mit Benutzer-FTP und kein Zugriff für Benutzer-Apache.

Ich löste dieses Problem mit erweiterten Dateisystemen afls.

Es ist möglich, einen 'Standardbenutzer' und/oder eine Standardgruppe für neue generierte Dateien zu verwenden.

Was Sie tun müssen:

  • Add 'acl' zu Ihrer Mount-Optionen für die gewünschte Dateisystem. (Bitte überprüfen Sie, ob Ihr Kernel für Posix acl, bevor Sie so konfiguriert ist!)
  • Verwendung Befehl ‚setfacl‘ Berechtigungen festlegen (Sie können ein Paket installieren, müssen enthalten ‚setfacl‘, bevor sie auf Ihrer Distribution ab.)

Beispiel:

Zuerst für Benutzer ftp eigene so können Uploads

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

Weitere Standard für Benutzer apache

gemacht werden

Nachdem Sie Dateien oder Verzeichnisse in dieses Verzeichnis geschrieben haben, sehen Sie, dass Sie mehrere Zugriffsrechte auf sie haben. Beachten Sie jedoch, dass diese Rechte nur einmal vergebenen neuen Dateien erteilt werden.

# 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 ‚ls -l‘ verwenden Sie sehen ein ‚+‘ nach den Berechtigungen ü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 
+0

Es druckt Operation nicht unterstützt ... –

+0

bei welchem ​​Schritt wird Druckvorgang nicht unterstützt? –

1

Ich würde um jeden Preis vermeiden vermeiden Apache-Benutzer root Berechtigungen.

Dies würde durchaus ein ernstes Sicherheitsproblem sein: genau, weil der Server möglicherweise ist (mehr) anfällig Sie in der Regel einen specifc Benutzer machen (hier der ‚Apache‘ Benutzer), wo Sie die Privilegien nur diejenigen angeben das sind wirklich für den Serverlauf benötigt.

Wenn es Probleme mit dem Apache Benutzer nicht die richtigen Berechtigungen mit Sie sie durch Änderung des Eigentums an entsprechenden Dateien zu Apache-Benutzer lösen sollte,

chown apache:apache <filename> 

oder, indem man sie lesbar machen/beschreibbar ausführbar für mehr Benutzer, z mit

chmod 777 <filename> 
+0

Lauf Apache als root ist eigentlich besser als Dateien mit 777. Der ehemalige verletzt Nur wenn es einen Fehler im Apache gibt, erlaubt Letzterer jedem Benutzer, in alle Dateien zu schreiben. –

Verwandte Themen