Як я можу створити користувача лише для sftp?


15

Я додав користувача до системи через adduserінструмент. Потім /etc/passwdя спробував змінити /bin/bashна /sbin/nologinабо на /dev/null, але жодне з них не вийшло.

Я хотів би, щоб користувач не мав можливості отримати інтерактивну оболонку, а просто використовувати sftp. Чи є спосіб?

Я знаю, що про це тут питали раніше, але, здається, ніхто не дав задовільної відповіді.


Що ви маєте на увазі під "не везінням"?
Paweł Brodacki

Я мав на увазі, що віддалений scp / sftp не працює. Я вирішив це за допомогою оболонки scponly, як запропонував Ійн
Тоні Роза

Відповіді:


9

Команда, яку ви повинні використовувати для зміни оболонки, - це chsh . Оболонка нологіну може бути /sbin/nologinабо /usr/sbin/nologin(перевірте, що у вас є, заглянувши /etc/shells), але /bin/false, ймовірно, буде кращим вибором.

chsh -s /bin/false user

Вам слід подумати про те, щоб створити щось на кшталт scponly, яке буде робити саме те, що ви хочете.


Дякую за вашу відповідь. Я без спроби намагався із оболонками всередині / etc / shell ... / bin / false дає "втрачене з'єднання", а / sbin / nologin повертає "Цей обліковий запис наразі недоступний." Я спробую це скапоні
Тоні Роза

Я вирішив це за допомогою оболонки scponly! Ура
Тоні Роза

3
Ця відповідь - голка в сіні! Переконайтеся , що /bin/falseі /bin/nologinнасправді доступні /etc/shells!
Afr

@Afri Fine, але ... ти дуже хочеш прочитати serverfault.com/questions/328395/… . Це досить категорично протипоказано.
Reinderien

@Afr не ставлять nologinв /etc/shells! serverfault.com/a/328424
RobAu

9

Ви також повинні мати можливість це робити з OpenSSH 4.9 і новіших версій, за допомогою яких ви можете додатково хронувати користувача для підвищення безпеки.

У вашому /etc/ssh/sshd_config:

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

Потім запустіть:

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

Користувач зможе записувати лише в / home / user / uploads.

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


+1 Я поставив це до свого списку для розслідування.
користувач9517

1
Я використовував це, і він працює чудово - ви також можете надати користувачеві можливість увійти в середовище chroot за допомогою оболонки, але в такому випадку вам потрібно скопіювати мінімум бібліотек та деяких інших утиліт, як очікувалося. Для цього корисний Jailkit ( olivier.sessink.nl/jailkit ).
Едуардо Іванець

Спасибі, ForceCommand був натяком. Мені не потрібно chroot, але я хочу увійти до SFTP за допомогою службових облікових записів.
AnrDaemon

2

Я думаю, що найкращий спосіб - це з моєю захищеною оболонкою

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

Ви можете захистити користувача за допомогою цього легко і навіть обмежити пропускну здатність, якщо це необхідно.


Я вирішив це за допомогою оболонки scponly, але це цікаво знати цю мішуречку
Тоні Роза

1

Ви можете додати користувача, -s /bin/falseщоб вимкнути його оболонку, але те, що ви насправді повинні шукати у налаштуванні, - це хронізований рахунок sftp. Це призведе до "ув'язнення" користувача в його власну каталогію і не дозволить їм отримати доступ або змінити будь-які файли чи каталоги за межами каталогу chroot.


Дякую за вашу відповідь, але, здається, це не працює. Я отримую "втрачене з'єднання" щоразу, коли намагаюся користуватися користувачем shell / bin / false.
Тоні Роза
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.