To jest proste. Wystarczy utworzyć nowego użytkownika z katalogiem domowym ustawionym na ten, do którego ma mieć dostęp (ta komenda musi być uruchomiona pod sudo
lub w powłoce roota):
adduser --home /restricted/directory restricted_user
To utworzy użytkownika restricted_user
, katalog /restricted/directory
, a następnie uprawnienia na tym katalogu zostaną ustawione tak, aby użytkownik mógł do niego pisać. Nie będzie on miał domyślnie możliwości zapisu do żadnego innego katalogu.
Jeśli masz już ten katalog, możesz uruchomić komendę adduser
z dołączoną opcją --no-create-home
i ustawić uprawnienia ręcznie (również z uprawnieniami roota), np:
chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory
Jeśli trzeba uczynić niedostępnymi dla tego użytkownika nawet katalogi zapisywalne przez świat, istnieją dwa warianty.
1) Jeśli chcesz zapewnić użytkownikowi interaktywną sesję powłoki, wtedy rozważ zastosowanie się do tego podręcznika na temat tworzenia chroot jail (w twoim /restricted/directory
).
Po tym, dodaj następujące elementy do swojego sshd_config
:
Match user restricted_user
ChrootDirectory /restricted/directory
2) Jeśli potrzebujesz go tylko do kopiowania plików między jego punktem końcowym połączenia a twoim hostem, wszystko jest o wiele łatwiejsze. Dodaj te linie na końcu swojego sshd_config
:
Match user restricted_user
ForceCommand internal-sftp
ChrootDirectory /restricted/directory
Subsystem sftp internal-sftp
Następnie wykomentuj Subsystem sftp /usr/lib/openssh/sftp-server
umieszczając na początku znak hash (#
).
Po ponownym uruchomieniu serwera SSH (nie zabija on interaktywnych sesji przy ponownym uruchomieniu, więc jest bezpieczny nawet jeśli coś źle skonfigurowałeś; nie zamyka też działającej sesji zanim nie sprawdzisz, że nadal możesz się zalogować), wszystko powinno działać zgodnie z przeznaczeniem.