我创建了一个用户:
useradd -m -s /bin/false testuser
此外,我在 vsftpd.user_list 中添加了“testuser”,并使用 passwd 更改了密码。重新启动 vsftpd 服务后,我想登录服务器,但收到错误 530(登录不正确)。为什么我无法登录服务器?使用在服务器安装时创建的默认用户,它可以正常工作。为什么?
谢谢
答案1
我以前也遇到过类似的情况,对我来说,问题在于这/bin/false
不是一个 shell。(抱歉,无法更好地解释,忘记了背景。我认为这与 PAM 有关。)
许多较旧的教程建议将/bin/false
无登录用户的设置设为 shell,但更好的选择是/usr/sbin/nologin
。
尝试设置/usr/sbin/nologin
为 FTP 用户的登录 shell:
usermod -s /usr/sbin/nologin USERNAME
然后尝试再次登录。
答案2
我通过重新安装 vsftpd 解决了这个问题。现在用户可以工作了。
答案3
@lxg 你真的差点就做到了。
我同意这/usr/sbin/nologin
不是一个 shell,因为你没有将它添加到/etc/shells
。因此,如果你将此行附加到 shells 文件中,则如下所示:
# /etc/shells:有效的登录 shell /bin/sh /bin/dash /bin/bash /bin/rbash /usr/sbin/nologin
问题就解决了。
当然,您必须使用命令以用户身份登录
usermod -s /usr/sbin/nologin 用户名
并匹配共享目录的权限。
要恢复登录可能性,只需使用:
usermod -s /bin/bash 用户名
顺便说一句。在 Ubuntu 16.04 上,只有这种方法对我有用。