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?


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
    

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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.