fragen stichworte

Erlauben Sie dem Benutzer nur SSH-Zugriff auf ein Verzeichnis

Ich habe einen Server, auf dem Centos 6.4 ausgeführt wird, und ich muss einem Freiberufler Zugriff auf einen Ordner auf dem Server erlauben, um Code hochzuladen und einige Tests durchzuführen

username:x:505:505::/home/virtual_server/directory/home_directory/:/bin/bash

Beim Versuch und SSH erhalten sie:

Could not chdir to home directory/home/virtual_server/directory/home_directory/: Permission denied
-bash:/home/virtual_server/directory/home_directory//.bash_profile: Permission denied

Wenn sie versuchen, sich über FTP anzumelden (VSFTP, wo ich chroot aktiviert habe), erhalten sie eine Fehlermeldung:

Response:   500 OOPS: cannot change directory:/home/virtual_server/directory/home_directory
Error:  Critical error: Could not connect to server

Ich habe vor einigen Jahren eine ähnliche Frage gefunden, für die die akzeptierte Antwort alle Verzeichnisse oberhalb des Basisverzeichnisses ändern musste, um https://serverfault.com/a/435430/142823

Gibt es eine alternative Möglichkeit, dies zu tun, ohne die Berechtigungen für andere Verzeichnisse oder etwas weniger "permanent" ändern zu müssen?

antworten

Wenn Ihr System openssh verwendet hat, kann dies helfen:

Ändere den SFTP-Server in den internen, der ls, cd und andere Befehle

ausführen kann  
#/path/to/the/sshd_config
. . . . .
Subsystem       sftp    internal-sftp
. . . . .

Fügen Sie dann Regeln für den Benutzer hinzu:

. . . . .
Match User username
        X11Forwarding no
        AllowTcpForwarding no
        ChrootDirectory/home/virtual_server/directory/. . . . .

Ändern Sie dann die Shell des Benutzers in /bin/nologin. Beachten Sie, dass /home/virtual_server/directory/ Root-Besitzer sein sollte, wenn /home/virtual_server/directory/home_directory/ diesem Benutzer gehört.

Nun kann der Benutzer über SFTP, der chroot wird, auf /home/virtual_server/directory/ zugreifen. Er kann nichts innerhalb dieses Verzeichnisses tun außer cd in home_directory wo er Dateien hoch/herunterladen, löschen und umbenennen kann.

Wenn Sie möchten, dass der Benutzer einige Befehle/Skripte starten kann - dann erstellen Sie einen anderen Login und gewähren Sie ihm alle benötigten mit sudo.