
Ich verwende Amazon Linux AMI (Red Hat-Derivat) und erstelle einen neuen SFTP-Server mit OpenSSH. Ich möchte, dass der SFTP-Benutzer auf ein Verzeichnis beschränkt ist und in das Anfangsverzeichnis schreiben kann, das von seinem SFTP-Client angezeigt wird.
Ich verwende ChrootDirectory, um den Benutzer in zu chrooten /home/customers/srgcompany
. Das bedeutet, dass dieses Verzeichnis root gehören muss und nur von root beschreibbar ist. Der Passwd-Eintrag des Benutzers sieht wie aus fflintstone:x:508:515:Fred Flintstone:/home/fflintstone:/sbin/nologin
. Ich habe den öffentlichen Schlüssel des Benutzers in abgelegt /home/fflintstone/.ssh/authorized_keys
. Ich habe einen Ordner erstellt, für den die Benutzergruppe ( srgcompany
) Lese-/Schreib-/Ausführungs-/SGID-Berechtigung hat, unter /home/customers/srgcompany/fileshere
. Ich habe OpenSSHs SFTP mit konfiguriert Subsystem sftp internal-sftp -u 0007 -l INFO
.
Wenn der Benutzer also derzeit einen SFTP-Client zur Verbindung verwendet, kann in das angezeigte Verzeichnis (das vom Befehl pwd zurückgegeben wird) nicht geschrieben werden. Der Benutzer kann in den Ordner „fileshere“ wechseln und dort schreiben. Gibt es eine Möglichkeit, diesen Ordner „fileshere“ zum anfänglichen Remote-Arbeitsverzeichnis zu machen, sobald der Benutzer sich per SFTP einloggt, wie im folgenden Beispiel? Oder kann ich den Chroot-Ordner beschreibbar machen?
Was ich möchte:
$ sftp sftpserver.sssprockets.com
Connected to sftpserver.sssprockets.com.
sftp> pwd
Remote working directory: /fileshere
Jede Hilfe wird sehr geschätzt.
Antwort1
Wenn chroot oder internal-sftp nicht verwendet werden, verwendet das OpenSSH-Paket ein Programm namens sftp-server
zur Verarbeitung eingehender SFTP-Sitzungen. DasDokumentation für SFTP-Serverlistet eine Befehlszeilenoption für das Startverzeichnis auf:
-Dstart_directory
gibt ein alternatives Startverzeichnis für Benutzer an. Der Pfadname kann die folgenden Token enthalten, die zur Laufzeit erweitert werden: %% wird durch ein wörtliches „%“ ersetzt, %d wird durch das Home-Verzeichnis des authentifizierten Benutzers ersetzt und %u wird durch den Benutzernamen dieses Benutzers ersetzt. Standardmäßig wird das Home-Verzeichnis des Benutzers verwendet. Diese Option ist in Verbindung mit der ChrootDirectory-Option von sshd_config(5) nützlich.
Diese Dokumentation gilt auch für das internal-sftp
Subsystem, daher können Sie diese Option auch hier verwenden. Beachten Sie, dass Sie das Startverzeichnis relativ zum Chroot angeben sollten, nicht das eigentliche Stammverzeichnis des Systems:
Subsystem sftp internal-sftp -u 0007 -l INFO -d /fileshere