Das Ändern der Schreibberechtigungen für inhaftiertes SFTP verweigert die Anmeldung

14

Ich habe in vielen Websites und Foren nachgeforscht, wie man einen SFTP-Benutzer einrichtet, der mit CHROOT in ein bestimmtes Verzeichnis gesperrt ist. Hier sind die Schritte, die ich befolgt habe, aber ich kann anscheinend keine Schreibrechte für die Arbeit erhalten.

Installieren

sshd_config

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


Match group webmaster
        X11Forwarding no
        ChrootDirectory %h
        AllowTcpForwarding no
        ForceCommand internal-sftp

Ordner erstellen

mkdir /var/www/sites

Benutzer und Gruppe erstellen

useradd uploader
passwd uploader
usermod -d /var/www/sites uploader
groupadd webmaster uploader
groupadd www-data uploader

Berechtigungen und Eigentum

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

Mit diesen Einstellungen kann der Benutzer-Uploader nun SFTP in das Ausgangsverzeichnis übertragen, jedoch nicht in das Verzeichnis schreiben.

Es treten 2 typische Fehler auf, ich kann mich entweder nicht anmelden oder ich habe keine Schreibrechte.

Login Fehler

Error:    Network error: Software caused connection abort
Error:    Could not connect to server


Changing permissions of /var/www/sites to 775 or 777 causes login error.
chown /var/www/sites to uploader:root causes login error.
chwon root:webmaster or root:www-data I have no write permissions

Ich bin uneins und versuche, das herauszufinden, und wenn mich jemand in die richtige Richtung weisen könnte, wäre ich sehr dankbar dafür.

Vielen Dank.

Onggie
quelle

Antworten:

16

Finde die Lösung heraus. Der Benutzer ist inhaftiert /var/www/sites. Ich habe dann einen anderen Ordner angelegt /var/www/sites/site1.

Ich benutze:

chown root:webmaster /var/www/sites/site1 
chmod 775 /var/www/sites/site1

Dies ermöglichte es dem Basisverzeichnis, über die richtigen Anmeldeberechtigungen zu verfügen und dann in den nächsthöheren Ordner zu schreiben.

Wenn der Benutzer Schreibzugriff benötigt, /var/www/sitesmüssen Sie den Benutzer, /var/wwwder root:rootEigentümer und Berechtigungen von 755 hat, einsperren. Anschließend müssen Sie /var/www/sitesEigentümer von root: (Ihre Gruppe) und Berechtigungen von 775 erteilen .

Onggie
quelle
1

Vielleicht ist die beste Lösung:

mkdir /var/www/sites/myfirstuser/hisownsite
mkdir /var/www/sites/myseconduser/hisownsite

...

chown root:root /var/www/sites /var/www/sites/{myfirstuser,myseconduser} && chmod 755 /var/www/sites/{myfirstuser,myseconduser}

chmod 775 /var/www/sites/myfirstuser/hisownsite
chmod 775 /var/www/sites/myseconduser/hisownsite
chgrp www-data /www/sites/myfirstuser/hisownsite /var/www/sites/myseconduser/hisownsite

Fügen Sie die Benutzer hinzu:

useradd -d /var/www/sites/myfirstuser -s /bin/false -g www-data  dev1
useradd -d /var/www/sites/myseconduser -s /bin/false -g www-data dev2
passwd dev1
passwd dev2

Fügen Sie dann für jeden von Ihnen erstellten Benutzer ein ssh-Tag wie folgt hinzu: (Sie können auch die Direktive "Match Group" wie in Ihrem Beispiel anstelle von "Match User" verwenden.)

Match User dev1
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Match user dev2
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

So können Sie alle Benutzer, die Sie benötigen, in einer Chroot-Umgebung verwalten.

Hth, Fabrizio

Fabreg
quelle
Re Ihren endgültigen Codeblock: Matches unterstützt mehrere Ziele in kommagetrennte Listen, so konnten wir erheblich vereinfachen / ordentlich , dass durch einen einzigen Satz von Überschreibungen für beiden Benutzer mit, durch die ÜberschriftMatch User dev1,dev2
underscore_d
1
Wie stellen Sie es ein, damit sie an den Ordner gebunden sind, auf den sie Lese- / Schreibzugriff haben?
Kevin B Burns