ubuntu环境下的用户添加 - 指定用户shell



在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 这个文件(默认源码安装的不会有这个文件),因此除了匿名用户外本地用户无法登录。所以只要删除了就可以了。



你可能感兴趣的:(Linux点滴)