Jak mogę utworzyć użytkownika tylko dla sftp?


15

Dodałem użytkownika do systemu za pomocą addusernarzędzia. Następnie, w /etc/passwd, próbowałem zmieniając /bin/bashsię /sbin/nologinczy /dev/null, ale żadna z nich nie pracował.

Chciałbym, aby użytkownik nie miał opcji uzyskania interaktywnej powłoki i po prostu jej używał sftp. Czy jest jakiś sposób?

Wiem, że już tu o to pytano, ale wydaje się, że nikt nie udzielił zadowalającej odpowiedzi.


Co rozumiesz przez „brak szczęścia”?
Paweł Brodacki

Miałem na myśli, że zdalne scp / sftp nie działa. Rozwiązałem go za pomocą scponly shell, jak sugeruje Iain
Toni Rosa

Odpowiedzi:


9

Poleceniem, którego należy użyć do zmiany powłoki, jest chsh . Powłoka nologin może być /sbin/nologinlub /usr/sbin/nologin(sprawdź, które masz, patrząc /etc/shells), ale /bin/falseprawdopodobnie byłby lepszym wyborem.

chsh -s /bin/false user

Powinieneś rozważyć skonfigurowanie czegoś takiego jak scponly, które zrobi dokładnie to, co chcesz.


Dziękuję za odpowiedź. Próbowałem z powłokami wewnątrz / etc / shell bez powodzenia ... / bin / false daje „utracone połączenie”, a / sbin / nologin zwraca „To konto jest obecnie niedostępne”. Spróbuję tego skrupulatnie
Toni Rosa

Rozwiązałem go za pomocą scponly shell! Pozdrawiam
Toni Rosa

3
Ta odpowiedź to igła w sianie! Upewnij się /bin/falsei /bin/nologinsą faktycznie dostępne w /etc/shells!
Afr

@Afri Dobrze, ale ... będziesz naprawdę chcą czytać serverfault.com/questions/328395/... . Jest to dość mocno przeciwwskazane.
Reinderien

@Afr nie umieścić nologinw /etc/shells! serverfault.com/a/328424
RobAu

9

Powinieneś być również w stanie to zrobić z OpenSSH 4.9 i nowszym, za pomocą którego możesz dodatkowo uruchomić użytkownika w celu zwiększenia bezpieczeństwa.

W twoim /etc/ssh/sshd_config:

Match User user
ChrootDirectory /home/user
ForceCommand internal-sftp
AllowTcpForwarding no

Następnie uruchomić:

chsh -s /bin/false user
chown root:root /home/user
mkdir /home/user/uploads
chown user /home/user/uploads

Użytkownik będzie mógł pisać tylko w / home / user / uploads.

https://debian-administration.org/article/590/OpenSSH_SFTP_chroot_with_ChrootDirectory


+1 Umieściłem to na mojej liście w celu zbadania.
user9517

1
Użyłem go i działa dobrze - możesz także dać użytkownikowi możliwość zalogowania się do środowiska chroot za pomocą powłoki, ale w takim przypadku musisz skopiować co najmniej biblioteki i inne narzędzia zgodnie z oczekiwaniami. Przydatny jest Jailkit ( olivier.sessink.nl/jailkit ).
Eduardo Ivanec

Dzięki, ForceCommand było wskazówką. Nie potrzebuję chroot, ale chcę zalogować się do SFTP przy użyciu kont serwisowych.
AnrDaemon


1

Możesz dodać użytkownika, -s /bin/falseaby wyłączyć jego powłokę, ale tak naprawdę powinieneś rozważyć konfigurację konta chrootowanego sftp. Spowoduje to „uwięzienie” użytkownika w jego własnym katalogu i uniemożliwi mu dostęp do lub modyfikowanie plików lub katalogów poza katalogiem chroot.


Dzięki za odpowiedź, ale wydaje się, że nie działa. Dostaję „utracone połączenie” za każdym razem, gdy próbuję użyć użytkownika powłoki / bin / false.
Toni Rosa
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.