在ubuntu环境下,首先创建一个文件夹 /home/test, 然后使用命令 useradd test -g ftp -d /home/test -s /sbin/nologin来添加一个用户,并指定用户的主目录为 /home/test。
至于-s选项表示用户使用的shell。
创建完毕之后,我们切换用户来看一下
root@vm65:~# su - test
Cannot execute /sbin/nologin: No such file or directory
这个就说明-s设置的目录不对,我们查看了一下,确实没有这个目录。
这时候,可以打开/etc/passwd文件看看其他用户的shell是怎么设置的。 打开之后我们发现,其他用户的shell都是如下
/bin/bash
/bin/sh
/usr/sbin/nologin
从这里可以看到是我们之前的设置是不对的,正确的设置应该是/usr/sbin/nologin。 更改之后,我们再切换用户看一下,
root@vm65:/sbin# su - test
This account is currently not available.
这次没有提示路径不存在的错误。 出现这个提示的原因,是因为我们创建这个用户只是为了ftp操作等内容,我们并不期望这个用户登录进来做什么其他的操作。
此外,还可以将用户的shell设置成/bin/false
我们现在开始试验一下:
hai@MaHai:~/config$ ftp 10.0.1.165
Connected to 10.0.1.165.
220 (vsFTPd 2.3.5)
Name (10.0.1.165:haiqinma): test
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp> by
在网上搜罗了一下, 解决方法是:
sudo apt-get remove vsftpd
sudo rm /etc/pam.d/vsftpd
sudo apt-get install vsftpd
这个是因为ubuntu启用了PAM,所在用到vsftp时需要用到 /etc/pam.d/vsftpd 这个文件(默认源码安装的不会有这个文件),因此除了匿名用户外本地用户无法登录。所以只要删除了就可以了。