# Wie beschränke ich einen sFTP-Benutzer auf ein Verzeichnis?

OpenSSH (4.8p1 für die GNU/Linux-Portierung) bietet ab dieser Version die Konfigurationsoption `ChrootDirectory`. Möglich wird dies durch ein neues SFTP-Subsystem, das statisch mit sshd verknüpft ist.

Damit lässt sich ein einfacher FTP-Dienst problemlos ersetzen, ohne eine Verschlüsselung konfigurieren und/oder sich beim Betrieb über einen NAT-Router mit passiven und aktiven FTP-Modi befassen zu müssen. Dies ist außerdem einfacher als Pakete wie rssh oder andere Patches, da keine chroot-Umgebung eingerichtet und gewartet werden muss (z. B. durch Sicherheitsupdates).

Zur Aktivierung benötigen Sie selbstverständlich die neue Version 4.8p1. Ich persönlich verwende die cvs-Version und das Verzeichnis debian/ des sid-Pakets, um ein gut integriertes Debian-Paket 4.8p1\~cvs-1 zu erstellen.

In `/etc/ssh/sshd_config`:

Sie müssen OpenSSH so konfigurieren, dass es sein internes SFTP-Subsystem verwendet.

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_J2dUuDbK49ciWRJSpUNizRHxu8UE)

```bash
Subsystem sftp internal-sftp

```

Anschließend habe ich die Verwendung von `chroot()` in einer Match-Regel konfiguriert.

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_J2dUuDbK49ciWRJSpUNizRHxu8UE)

```bash
Match group sftponly
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

```

Das Verzeichnis, auf das `chroot()` angewendet wird, muss root gehören. Nach dem Aufruf von `chroot()` wechselt `sshd`relativ zum neuen Stammverzeichnis in das Home-Verzeichnis. Deshalb verwende ich `/` als Home-Verzeichnis.

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_J2dUuDbK49ciWRJSpUNizRHxu8UE)

```console
$ chown root.root /home/user
$ usermod -d / user
$ adduser user sftponly

```

Dies scheint wie erwartet zu funktionieren:

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_J2dUuDbK49ciWRJSpUNizRHxu8UE)

```console
$ sftp user@host
Connecting to host...
user@host's password:
sftp> ls
build               cowbuildinall       incoming            johnbuilderclean
sftp> pwd
Remote working directory: /
sftp> cd ..
sftp> ls
build               cowbuildinall       incoming            johnbuilderclean

```

> Wir haben die ursprünglichen Anweisungen aus[https://debian-administration.org/article/590/OpenSSH\_SFTP\_chroot\_with\_ChrootDirectory](https://web.archive.org/web/20190316222106/https://debian-administration.org/article/590/OpenSSH%5FSFTP%5Fchroot%5Fwith%5FChrootDirectory)direkt übernommen, da diese Website zum Zeitpunkt der Erstellung nicht mehr funktionierte.
