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.

Toni Rosa
źródło
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.

Iain
źródło
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

Eduardo Ivanec
źródło
+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
2

Myślę, że najlepiej jest z mysecureshell

http://mysecureshell.sourceforge.net/en/index.html

Możesz w ten sposób zrootować użytkownika, a nawet w razie potrzeby ograniczyć przepustowość.

Mikrofon
źródło
Rozwiązałem go za pomocą scponly shell, ale ciekawym jest wiedzieć, że ta mysecureshell
Toni Rosa
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.

gravyface
źródło
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