Ermöglichen Sie Nicht-Root-Benutzern das Hoch- und Herunterladen in das Website-Verzeichnis.

Ermöglichen Sie Nicht-Root-Benutzern das Hoch- und Herunterladen in das Website-Verzeichnis.

Ich habe eine Website in meinem VPS. Ich installiere Debian 7 auf diesem VPS. Mein HTTP-Dokument befindet sich in dem Verzeichnis, in dem /var/www/example.comich Nginx auf diesem Server installiert habe, und das Verzeichnis /var/www/example.comgehört dem Benutzer www-dataund der Gruppe www-data. Ich möchte einen Nicht-Root-Benutzer (nennen wir ihn someone) hinzufügen, um Dokumente über einen FTP- oder SFTP-Client wie FileZilla in dieses Verzeichnis herunterladen oder hochladen zu können.

ich fandDasUndDasAnleitung, die erklärt, wie es geht chroot. Ich habe versucht, es zu konfigurieren, aber es hat nicht funktioniert. Hier sind einige Befehle, die ich bisher verwendet habe.

  1. useradd someone
  2. groupadd sftpusers
  3. usermod -G sftpusers someone
  4. vi /etc/ssh/sshd_config

Ich habe diesen Code hinzugefügt

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Und am Ende der Datei habe ich hinzugefügt

Match group sftpusers
    ChrootDirectory /var/www/example.com
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
  1. service ssh restart

Aber als ich mich über FileZilla verbunden habe, wurde mir ein Fehler angezeigt. Ich vermute, dass dieser Fehler /var/www/example.comauf Benutzer www-dataund Gruppe zurückzuführen ist www-data.

Frage: Wie kann man Nicht-Root-Benutzern ermöglichen, Dokumente über einen FTP- oder SFTP-Client wie FileZilla in ein Verzeichnis herunterzuladen oder hochzuladen? /var/www/example.comDieser Nicht-Root-Benutzer sollte nicht auf übergeordnete Verzeichnisse wie FileZilla zugreifen können./var/www/

Antwort1

OH, um Himmels willen, setzen Sie die Berechtigung 777 für NICHTS, worauf „world+dog“ zugreifen kann (z. B. Ihre Website-Verzeichnisse, anonyme FTP-Ordner).

Modernes Linux und BSD haben benutzerspezifische ACLs, die Sie festlegen können und die perfekt funktionieren! Sie können dies auch verwenden, um rwx für bestimmte Benutzer und bestimmte Gruppen hinzuzufügen. Wenn Sie sie einmal verstanden haben, ist das ganz einfach!

TLDR; verwenden Sie den Befehl setfacl wie folgt: #setfacl -m someuser:rwx /public_html SHAZAM! Jetzt hat someuser Lese-/Schreib-/Ausführungsrechte für Ihr Verzeichnis public_html. Ich möchte Sie ermutigen, die Manpage für setfacl oder zumindest ein HOWTO zu lesen, um sich mit der Funktionalität vertraut zu machen. Hier ist eine einfache Einführung in Dateisystem-ACLs: https://www.redhat.com/sysadmin/linux-access-control-lists

Es eignet sich hervorragend für Webserver, bei denen Sie bestimmten Entwicklern mit eigenen Konten Zugriff gewähren müssen, ohne World+Dog rwx zu gewähren.

Antwort2

So stelle ich mein SFTP für einen bestimmten Benutzer ein

1] Benutzer erstellen

 adduser {USER}

2] /etc/ssh/sshd_config bearbeiten

 PasswordAuthentication yes 

 Subsystem sftp
 internal-sftp -u 0007 -f AUTH -l VERBOSE 
 Match Group {USER}
     ChrootDirectory {FOLDER}
     ForceCommand internal-sftp -u 0007
     AllowTcpForwarding no
     GatewayPorts no
     X11Forwarding no

3] Rechte für den Benutzer festlegen

 chmod -R 777 {FOLDER}

4] ssh neu starten

service ssh restart

Ersetzen Sie {USER} durch Ihren Benutzer und {FOLDER} durch Ihren Ordner, dann sollte es funktionieren! ;)

Antwort3

Okay, nach einigem Ausprobieren scheint hier die Antwort zu sein.

  1. adduser someone
  2. vi /etc/ssh/sshd_config Ich verwende die Konfiguration von Froggiz, daher sieht mein Code folgendermaßen aus:

    PasswordAuthentication yes 
    
    Subsystem sftp internal-sftp -u 0007 -f AUTH -l VERBOSE 
         Match Group someone
         ChrootDirectory /var/www
         ForceCommand internal-sftp -u 0007
         AllowTcpForwarding no
         GatewayPorts no
         X11Forwarding no
    
  3. service ssh restart

  4. chmod -R 777 /var/www/example.com. Dadurch kann jemand Dateien hoch-/herunterladen und dem Webserver/PHP erlauben, Dateien in diesem Verzeichnis zu verarbeiten.

verwandte Informationen