Как я могу создать пользователя только для sftp?

15

Я добавил пользователя в систему через adduserинструмент. Тогда, в /etc/passwd, я попытался изменить /bin/bashк /sbin/nologinили /dev/null, но ни один из них работал.

Я бы хотел, чтобы у пользователя не было возможности получить интерактивную оболочку, а просто использовать sftp. Есть ли способ?

Я знаю, что здесь уже спрашивали, но, похоже, никто не дал удовлетворительного ответа.

Тони Роза
источник
Что вы подразумеваете под "не повезло"?
Павел Бродацкий
Я имел ввиду, что удаленный scp / sftp не работал. Я решил это, используя оболочку scponly, как предложено Iain
Toni Rosa

Ответы:

9

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

chsh -s /bin/false user

Вы должны подумать о настройке чего-то вроде scponly, которое будет делать именно то, что вы хотите.

иан
источник
Спасибо за Ваш ответ. Я попытался с оболочками внутри / etc / shell безуспешно ... / bin / false выдает "потерянное соединение", а / sbin / nologin возвращает "Эта учетная запись в настоящее время недоступна". Я попробую это scponly
Тони Роза
Я решил это используя оболочку scponly! Приветствия
Toni Rosa
3
Этот ответ - иголка в сене! Убедитесь , что /bin/falseи /bin/nologinна самом деле доступны /etc/shells!
Afr
@Afri Отлично, но ... вы действительно хотите прочитать serverfault.com/questions/328395/… . Это довольно сильно противопоказано.
Reinderien
@Afr не ставят nologinв /etc/shells! serverfault.com/a/328424
RobAu
9

Вы также должны быть в состоянии сделать это с OpenSSH 4.9 и выше, с помощью которого вы можете дополнительно сделать chroot пользователя для повышения безопасности.

В вашем /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 Я положил это в свой список для расследования.
user9517
1
Я использовал его, и он работает просто отлично - вы также можете дать пользователю возможность войти в среду chroot с оболочкой, но в этом случае вы должны скопировать минимум библиотек и некоторые другие утилиты, как и ожидалось. Для этого пригодится Jailkit ( olivier.sessink.nl/jailkit ).
Эдуардо Иванец
Спасибо, ForceCommand был намек. Мне не нужен chroot, но я хочу войти в SFTP с учетными записями служб.
AnrDaemon
2

Я думаю, что лучший способ с mysecureshell

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

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

Майк
источник
Я решил это, используя оболочку scponly, но мне интересно знать этот mysecureshell
Тони Роза,
1

Вы можете добавить пользователя с помощью, -s /bin/falseчтобы отключить его оболочку, но то, что вы действительно должны посмотреть на настройку, это учетная запись sotp в chroot. Это позволит «заключить» пользователя в его собственный каталог и лишить его возможности доступа или изменения любых файлов или каталогов вне каталога chroot.

gravyface
источник
Спасибо за ваш ответ, но, похоже, он не работает. Я получаю «потерянное соединение» всякий раз, когда пытаюсь использовать пользователя с помощью оболочки / bin / false.
Тони Роза