Erteilen eines SFTP-Benutzers Zugriff auf ein / var / www-Verzeichnis

12

Ich habe einen Benutzer angelegt und sein Home-Verzeichnis erstellt /var/www/mysite/ftpdir

Ich habe auch einen Match-Benutzereintrag für diesen Benutzer sshd_configmit einem ChrootDirectory hinzugefügt, der auf verweist/var/www/mysite

Ich habe neu gestartet ssh, um das aufzuheben.

Wenn ich mich mit sftp anmelde, wechselt der Benutzer immer noch in das alte Verzeichnis des Benutzers, d. H /home/user

Was vermisse ich?

Falkenauge
quelle
Wie wäre es mit einem Symlink /home/userzum Ziel?
ish

Antworten:

16

Dies ist der Prozess:

  1. Fügen Sie den Benutzer der Gruppe hinzu: sudo usermod -aG www blubWie in Was ist der einfachste Weg, Dateien zu "/ var / www" zu bearbeiten und hinzuzufügen?

    oder einfach benutzen sudo adduser <username> www-data

  2. Installieren Sie vsftpd sudo apt-get install vsftpd
  3. Konfigurieren Sie vsftpd für den Remotezugriff: sudo nano /etc/vsftpd.confund innerhalb der Dateigruppe

    chroot_local_user=YES
    

    und stellen Sie sicher, dass dies auskommentiert ist:

    #chroot_list_enable=YES
    

    gemäß Dokumentation .

  4. Nsftp neu starten: sudo service vsftpd restart
  5. Konfigurieren Sie das Ausgangsverzeichnis des Benutzers für das Webverzeichnis (nicht in /home):

    sudo usermod -d /var/www/mysite/ftpaccessdir <username>
    
  6. Konfigurieren Sie ssh chroot

    sudo nano /etc/ssh/sshd_config
    

    Fügen Sie am Ende Folgendes hinzu:

    Subsystem  sftp  internal-sftp
    Match user <username>
        ChrootDirectory /var/www/site
        ForceCommand internal-sftp
    AllowTcpForwarding no
    

    und stellen Sie sicher, dass weiter oben in der Datei, dass dies auskommentiert ist (dh vor dem, den Sie gerade hinzugefügt haben)

    #Subsystem sftp /usr/lib/openssh/sftp-server
    
  7. Starten Sie ssh neu

    sudo service ssh restart
    
  8. Ändern Sie die Berechtigungen für Apache:

    chown root:root /var/www
    chown root:root /var/www/site
    chmod 755 /var/www
    

    Wie in den Dokumenten hier .

  9. Stellen Sie sicher, dass Ihr Verzeichnis über WWW-Datenzugriff verfügt

    sudo chown -R www-data:www-data /var/www/site
    chmod 755 /var/www/site
    
Falkenauge
quelle
2
Ich habe diese Anweisung gefolgt, aber ich habe Verbindung am Ende weigerte mich, wenn ich diese Zeilen Subsystem sftp interne-SFTP - Spiel Benutzer hinzufügen <Benutzername> ChrootDirectory / var / www / site Innen SFTP keine AllowTcpForwarding Forcecommand
Ata
1
Ich habe auch das gleiche Problem mit Ubuntu 14.04
torayeff
Ich habe auch das gleiche Problem!
Maxisme
4
Wie kommt es, dass Sie bei Schritt 9 chown root:root /var/www/sitenur auf sudo chown -R www-data:www-data /var/www/siteSchritt 10 zurückgreifen müssen ? Ist dies beabsichtigt?
JohnnyQ
Dies funktioniert nicht für mich
Linga
2

Wenn Sie am Ende den Fehler " Verbindung abgelehnt " erhalten, stellen Sie sicher, dass "Subsystem sftp internal-sftp" nach "UsePAM yes" steht . Wenn nicht, dann aktualisiere und starte ssh neu und es funktionierte.

Needhi Agrawal
quelle
0

Ich habe eine einfache Methode und das hat bei mir für Apache funktioniert.

sudo useradd -d /var/www demo_user -g www-data
sudo passwd demo_user
sudo service ssh restart

Das ist es, falls Sie immer noch mit Berechtigungsproblemen konfrontiert sind chmodund chowndiese entsprechend Ihren Anforderungen bearbeiten müssen.

Imran Zahoor
quelle