Antworten:
Unix-Systeme bieten den chrootBefehl, 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 chrootsagen, Benutzer fooBenutzer 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 foomit Passwort erstellen
sudo useradd foo
sudo passwd foo
Nur für SFTP-Gruppe erstellen
$ sudo groupadd sftp_users
Zu einem Benutzer nur foofü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: MatchBlöcke müssen sich am ENDE der sshd_configDatei befinden.)
Starten Sie den sshDienst neu
sudo service ssh restart
Mit dieser Konfiguration können Sie in Ordner ssh ubuntuund Dateien abrufen . Kann nicht putoderdelete
Um im rechten Ordner sftp zu bearbeiten /etc/passwd. Ändern Sie die Zeile, damit der Benutzer fooso aussieht
$ sudo vi /etc/passwd
..
foo:x:1001:1001::/var/www/vhosts/:
..
Dadurch wird der Basisordner des Benutzers fooin Ihren SFTP-Serverordner geändert .
Subsystem sftp internal-sftp Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no ForceCommand internal-sftpaber 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 noIn sshd_config hinzugefügt und Benutzer und Gruppe wie Sie erstellt, aber der Benutzerfoohat Rechte für alle Ordner :(