如何仅为sftp创建用户?


15

我已经通过该adduser工具向系统添加了一个用户。然后,在中/etc/passwd,我尝试将/bin/bashto /sbin/nologin或to 更改为/dev/null,但是这些都不起作用。

我希望用户没有选择获取交互式shell的选项,而只是使用sftp。有办法吗?

我知道以前有人问过这个问题,但似乎没有人给出满意的答复。


“没有运气”是什么意思?
帕维尔Brodacki

我的意思是远程scp / sftp无法正常工作。我按照Iain的建议使用易碎壳解决了问题
Toni Rosa,

Answers:


9

更改外壳程序应使用的命令是 chsh。nologin shell可以是/sbin/nologinor /usr/sbin/nologin(或通过查看来检查是否具有/etc/shells),但/bin/false可能是一个更好的选择。

chsh -s /bin/false user

您应该考虑设置类似scponly的功能,该功能可以完全满足您的要求。


感谢您的回答。我已经尝试使用/ etc / shell中的shell了,但是没有运气... / bin / false给出了“丢失的连接”,/ sbin / nologin返回了“此帐户当前不可用”。我会尝试一下
Toni Rosa

我使用scponly shell解决了它!干杯
Toni Rosa

3
这个答案是最重要的!确保/bin/false/bin/nologin实际可用/etc/shells
AFR

@Afri很好,但是...您确实要阅读serverfault.com/questions/328395/…。强烈禁止这样做。
Reinderien '19

@Afr不要放进nologin/etc/shellsserverfault.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 2011年

1
我已经使用过它,并且效果很好-您还可以给用户一个选择,使其通过shell登录chroot环境,但是在这种情况下,您必须按预期复制最少的库和其他实用程序。Jailkit(olivier.sessink.nl/jailkit)可以派上用场。
Eduardo Ivanec

谢谢,ForceCommand是一个提示。我不需要chroot,但是我确实想使用服务帐户登录到SFTP。
AnrDaemon


1

您可以添加一个用户-s /bin/false以禁用其shell,但是设置时真正需要考虑的是chroot的sftp帐户。这会将用户“监禁”到他们自己的目录中,并阻止他们访问或修改chroot目录之外的任何文件或目录。


感谢您的回答,但它似乎没有用。每当我尝试使用外壳程序/ bin / false的用户时,都会收到“丢失的连接”。
托妮·罗莎
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.