Ich möchte einem Supportmitarbeiter vorübergehend SFTP-Zugriff gewähren. Wie erstelle ich einen SFTP-Benutzer? Und wie kann ich es löschen, wenn der Job erledigt ist?
Wie gebe ich auch ein Home-Verzeichnis für sie an? Kann ich verhindern, dass sie auf bestimmte Unterverzeichnisse in ihrem Home-Verzeichnis zugreifen?
Wir verwenden CentOS 6.3 und fzSftp
Akzeptierte Antwort:
Nicht-Chroot-Zugriff
Wenn Sie kein FTP-Server-Setup haben und darauf vertrauen, dass der Benutzer, der sich anmeldet, nicht zu viel auf Ihrem Server herumstöbert, wäre ich geneigt, ihm stattdessen ein Konto für SFTP im System zu geben.
Das CentOS-Wiki enthält eine einfache Anleitung mit dem Titel:Einfaches SFTP-Setup, das dies ziemlich schmerzfrei macht.
Ich sage, es ist schmerzfrei, weil Sie buchstäblich nur das Konto erstellen und sicherstellen müssen, dass die Firewall SSH-Verkehr zulässt, sicherstellen, dass der SSH-Dienst ausgeführt wird, und Sie sind ziemlich fertig.
Wenn sshd
läuft noch nicht:
$ /etc/init.d/sshd start
So fügen Sie einen Benutzer hinzu:
$ sudo useradd userX
$ sudo passwd userX
... set the password ...
Wenn Sie mit dem Konto fertig sind:
$ sudo userdel -r userX
Chroot-Zugriff
Wenn Sie diesen Benutzer andererseits auf ein bestimmtes Verzeichnis beschränken möchten, bietet der in SSH enthaltene SFTP-Server (openssh) eine Konfiguration, mit der dies ebenfalls einfach aktiviert werden kann. Es ist ein bisschen mehr Arbeit, aber nicht zu viel. Die Schritte werden hier in diesem Tutorial mit dem Titel behandelt:How to Setup Chroot SFTP in Linux (Allow Only SFTP, not SSH).
Nehmen Sie diese Änderungen an Ihrer /etc/ssh/sshd_config
vor Datei.
Subsystem sftp internal-sftp
## You want to put only certain users (i.e users who belongs to sftpusers group) in the chroot jail environment. Add the following lines at the end of /etc/ssh/sshd_config
Match Group sftpusers
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
Jetzt müssen Sie den Chroot-Verzeichnisbaum erstellen, in den dieser Benutzer eingesperrt wird.
$ sudo mkdir -p /sftp/userX/{incoming,outgoing}
$ sudo chown guestuser:sftpusers /sftp/guestuser/{incoming,outgoing}
Berechtigungen sollten wie folgt aussehen:
$ ls -ld /sftp/guestuser/{incoming,outgoing}
drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/incoming
drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/outgoing
Die Verzeichnisse der obersten Ebene wie folgt:
$ ls -ld /sftp /sftp/guestuser
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp/guestuser
Vergessen Sie nicht, sshd
neu zu starten Server:
$ sudo service sshd restart
Erstellen Sie nun das userX-Konto:
$ sudo useradd -g sftpusers -d /incoming -s /sbin/nologin userX
$ sudo passwd userX
... set password ...
Sie können überprüfen, ob das Konto korrekt erstellt wurde:
$ grep userX /etc/passwd
userX:x:500:500::/incoming:/sbin/nologin
Wenn Sie mit dem Konto fertig sind, löschen Sie es auf die gleiche Weise wie oben:
$ sudo userdel -r userX
… und vergessen Sie nicht, die oben vorgenommenen Änderungen an der Konfigurationsdatei zu entfernen, und starten Sie dann sshd
neu um sie wieder aktiv zu machen.