Ubuntu vsftpd 530 Login incorrect

最近有个需求要开放 FTP 服务给别人下载日志,因此装上了 vsftpd。但是在登录过程中提示 530 Login incorrect。查阅了一些资料记录一下解决方法。


useradd -d /home/ftp/testUser testUser

添加后的结果, 使用 cat /etc/passwd


如果使用 adduser testUser 添加一个用户


末尾多了/bin/bash 的配置内容,而这个决定了 vsftpd 的用户能否 ftp 登录。

直接编辑 vim /etc/passwd加上

# 或者

即可,它们的含义都是不让这个用户拥有 ssh登录系统的权限,关于这两个的区别:

When /sbin/nologin is set as the shell, if user with that shell logs in, they’ll get a polite message saying ‘This account is currently not available.’ This message can be changed with the file /etc/nologin.txt.
/bin/false is just a binary that immediately exits, returning false, when it’s called, so when someone who has false as shell logs in, they’re immediately logged out when false exits. Setting the shell to /bin/true has the same effect of not allowing someone to log in but false is probably used as a convention over true since it’s much better at conveying the concept that person doesn’t have a shell.
Looking at nologin‘s man page, it says it was created in 4.4 BSD (early 1990s) so it came long after false was created. The use of false as a shell is probably just a convention carried over from the early days of UNIX.
nologin is the more user-friendly option, with a customizable message given to the user trying to log in, so you would theoretically want to use that; but both nologin and false will have the same end result of someone not having a shell and not being able to ssh in.