Dokumentation
Wie man einen inhaftierten SFTP-Benutzer erstellt (chroot jail)
Wichtiger Hinweis für AWS Marketplace-Benutzer:
Wenn Sie das Root-Konto auf Ihrem Marketplace-Server nicht aktiviert haben, müssen Sie die folgenden Befehle mit sudo ausführen. Am einfachsten ist es, dies innerhalb einer Sudo-Shell zu tun und zu beenden, wenn Sie fertig sind.
sudo su
Und wenn fertig:
exit
Hier gehen wir...
Alle TurnKey Appliances sind mit SFTP vorkonfiguriert und aktiviert. Solange es Ihnen nichts ausmacht, Dateien zu lesen, ist dies möglicherweise kein Problem, da neue, nicht privilegierte Benutzer standardmäßig keinen Schreibzugriff außer ihrem Heimatverzeichnis haben. (normalerweise /home/USERNAME), plus überall, wo Sie ihnen ausdrücklich Schreibzugriff geben.) Zusätzlich können sie sich standardmäßig auch in eine SSH-Shell einloggen, da SFTP von SSH bereitgestellt wird. Was sie tun können, wird wieder begrenzt sein, aber das ist möglicherweise immer noch nicht wünschenswert.
In einem Szenario, in dem Sie nur möchten, dass sich SFTP-Benutzer über SFTP anmelden (und nicht SSH) und sie in ihrem eigenen Verzeichnis gesperrt werden (d. H. bekannt als "chroot jail"), dann können Sie SSH / SFTP konfigurieren, um dies zu tun.
Ich habe die Befehle in Skriptform gegeben, so dass sie in die Befehlszeile kopiert/eingelegt werden können. Wenn man also Teile davon wiederholt, besteht die Möglichkeit, dass man unerwartete Ergebnisse erzielt. Die benutzerbezogenen Befehle können für einen neuen Benutzer erneut ausgeführt werden (Ändern des Werts von NEW_USER), das Hinzufügen der Gruppe sftp_users und der SSH-Konfiguration sollte jedoch nur einmal durchgeführt werden. Wenn Sie die SSH-Konfigurationseinstellungen optimieren müssen, empfehle ich, die Konfigurationsdatei manuell zu bearbeiten.
Einmal laufen
Erstellen Sie die erforderliche Gruppe:
groupadd sftp_users
Einmal pro neuen Benutzer
Fügen Sie einen neuen Benutzer hinzu. Ich verwende hier den Namen "Newuser", aber Sie können jeden beliebigen Namen verwenden, obwohl ich dringend empfehle, nur Kleinbuchstaben ohne Leerzeichen oder Sonderzeichen zu verwenden. Wenn Sie zusätzliche Benutzer hinzufügen möchten, ändern Sie den Wert von "NEW_USER" (in der ersten Zeile unten):
NEW_USER="newuser" useradd -G sftp_users -s /sbin/nologin $NEW_USER passwd $NEW_USER
Sobald Sie ein Passwort für den neuen Benutzer festgelegt und bestätigt haben, erstellen Sie das neue Benutzerkonto:
mkdir -p /home/$NEW_USER/files chown root:root /home/$NEW_USER chown $NEW_USER:$NEW_USER /home/$NEW_USER/files chmod 700 /home/$NEW_USER/files usermod -d /files $NEW_USER
Nur einmal laufen!
Als nächstes müssen wir SSH/SFTP neu konfigurieren. Um dies zu tun, müssen wir die SSH-Konfigurationsdatei bearbeiten (/etc/ssh/sshd_config). Um es einfach zu machen, habe ich es in Skriptform zur Verfügung gestellt ). Bitte beachten Sie, dass dies nur getan werden sollte einmal.:
CONF=/etc/ssh/sshd_config
SEARCH="Subsystem sftp \/usr\/lib\/openssh\/sftp-server"
NEW_LINE="Subsystem sftp internal-sftp"
sed -i "/^$SEARCH/ s|^|#|" $CONF
sed -i "/$NEW_LINE/d" $CONF
sed -i "/$SEARCH/a\\$NEW_LINE" $CONF
if ! grep "Match Group sftp_users" $CONF >/dev/null; then
cat >> $CONF <<EOF
Match Group sftp_users
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /home/%u
ForceCommand internal-sftp
EOF
fi
Der letzte Schritt ist das Neustarten von SSH:
service ssh restart
Wenn Sie Ihre SSH-Einstellungen weiter optimieren müssen, bearbeiten Sie die Konfigurationsdatei bitte manuell mit einem Texteditor wie Nano.
nano /etc/ssh/sshd_config
Der Benutzer wird automatisch sftp in ihr chrooted Haus (/home/user/files).) Sie können cd zum elternverzeichnis cd (x0x haben aber nichts anderes als lesezugriff dort und können nicht höher surfen).
Zusätzliche Anmerkungen: Wenn Sie Ihrem chrooted SFTP-Benutzer etwas mehr Flexibilität gewähren möchten (z. B. scp und / oder rsync zulassen), installieren Sie anstelle einer /sbin/nologin-Shell. rssh (apt-get install rssh) und geben ihnen eine /usr/bin/rssh-Shell.