Antworten:
Unix-Systeme bieten den chroot
Befehl, mit dem Sie /
den Benutzer auf ein Verzeichnis in der Dateisystemhierarchie zurücksetzen können, in dem er nicht auf "übergeordnete" Dateien und Verzeichnisse zugreifen kann.
In Ihrem Fall ist es jedoch angebracht, eine virtuelle Chroot bereitzustellen, die vom Remote-Shell-Dienst implementiert wird. sftp kann einfach konfiguriert werden, um einen lokalen Benutzer auf eine bestimmte Teilmenge des Dateisystems zu beschränken.
Daher möchten Sie in Ihrem Fall chroot
sagen, Benutzer foo
Benutzer in das /var/www/vhosts/
Verzeichnis.
Sie können ein Chroot-Verzeichnis für Ihren Benutzer festlegen, um sie /var/www/vhosts/
wie folgt auf das Unterverzeichnis zu beschränken /etc/ssh/sshd_config
.
Benutzer foo
mit Passwort erstellen
sudo useradd foo
sudo passwd foo
Nur für SFTP-Gruppe erstellen
$ sudo groupadd sftp_users
Zu einem Benutzer nur foo
für SFTP-Gruppe hinzufügen
$ sudo usermod -G sftp_users foo
Eigentümer wechseln, da Lese- / Schreibberechtigung
sudo chown root.root /var/www/vhosts/
Berechtigung hinzufügen
sudo chmod 755 /var/www/vhosts/
Bearbeiten /etc/ssh/sshd_config
sudo vi /etc/ssh/sshd_config
Kommentieren Sie aus und fügen Sie eine Zeile wie unten hinzu
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Zuletzt hinzufügen
Match Group sftp_users
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /var/www/vhosts/
ForceCommand internal-sftp
(HINWEIS: Match
Blöcke müssen sich am ENDE der sshd_config
Datei befinden.)
Starten Sie den ssh
Dienst neu
sudo service ssh restart
Mit dieser Konfiguration können Sie in Ordner ssh ubuntu
und Dateien abrufen . Kann nicht put
oderdelete
Um im rechten Ordner sftp zu bearbeiten /etc/passwd
. Ändern Sie die Zeile, damit der Benutzer foo
so aussieht
$ sudo vi /etc/passwd
..
foo:x:1001:1001::/var/www/vhosts/:
..
Dadurch wird der Basisordner des Benutzers foo
in Ihren SFTP-Serverordner geändert .
Subsystem sftp internal-sftp Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no ForceCommand internal-sftp
aber es gibt einen Fehler, wenn ich ssh neu starten möchte/etc/ssh/sshd_config line 92: Directive 'UsePAM' is not allowed within a Match block
Match.....
Abschnitt am Ende der Datei zu setzen. Fügen Sie diesen Code am Ende der Datei ein und starten Sie ihn neu.
Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no
In sshd_config hinzugefügt und Benutzer und Gruppe wie Sie erstellt, aber der Benutzerfoo
hat Rechte für alle Ordner :(