今天碰到一个问题就是我创建了一个用户,并且可以用该用户来登陆成功了,但我在/home下并没有找到该用户,而查看用户时有提示在/home下面,甚是郁闷,特意查找了一些资料。下面就是我遇到的问题。
#创建一个cph1用户:
root@ubuntu:~# useradd cph1
root@ubuntu:~# passwd cph1
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
#利用cat /etc/passwd查看用户(中间省略了好多用户):
cph:x:1000:1000:Ubuntu,,,:/home/cph:/bin/bash
cph1:x:1001:1001::/home/cph1:
大家可以看到显示的是cph1是位于/home目录下的,但奇怪我在/home目录下并没有看到cph1。
root@ubuntu:/# ls /home
cph
/home下只有cph这个用户,并没有cph1用户。造成这个原因是对useradd和adduser认识不够深刻,下面就是他们两个的区别:
1. 使用useradd时,如果后面不添加任何参数选项,例如:#sudo useradd test创建出来的用户将是默认“三无”用户:
一无Home Directory,
二无密码,
三无系统Shell。
解决方法:
sudo useradd -m -s /bin/bash apple
-m:创建用户主文件夹 -s:新用户的默认shell
这样创建的用户不能执行sudo或su,解决方法:
一、$whereis sudoers -------找出文件所在的位置,默认都是/etc/sudoers
二、 #chmod u+w /etc/sudoers 以超级用户登录su -root ,修改文件权限即添加文件拥有这的写权限 限,ls -al /etc/sudoers 可以查看原文件的权限。
三、vim /etc/sudoers 编辑文件,在root ALL=(ALL)ALL行下添加XXX ALL=(ALL)ALL,XXX为你的用户名。
添加方法:找到root行,按下”i“键进入编辑模式添加即可!编辑好后esc键进入一般模式,“:
wq”保存退出!
最后, #chmod u-w /etc/sudoers 回到文件的原权限!
或者把该用户加入admin组。
2.使用adduser时,创建用户的过程更像是一种人机对话,系统会提示你输入各种信息,然后会根据这些信息帮你创建新用户。
useradd是一个ELF可执行程序;
useradd会添加用户名,并创建和用户名相同的组名,但它并不在/home目录下创建基于用户名的目录,也不提示创建新的密码。
-b, –base-dir BASE_DIR 指定home目录的base目录
-d, –home-dir HOME_DIR 指定home目录
-g, –gid GROUP 指定gid
-l, –no-log-init do not add the user to the lastlog and
faillog databases
不要把用户添加到lastlog和failog中, 这个用户的登录记录不需要记载
-M, –no-create-home 不要建立home目录
-p, –password PASSWORD 指定新用户的密码
-r, –system 建立一个系统帐号
-s, –shell SHELL 指定shell
adduser -m -d /usr/system -s /bin/bash -p passwd system
而adduser是一个perl脚本, 可以交互式地设定一些用户参数
问题:
adduser的-p 参数 并不能shadow密码
/usr/sbin/usermod 与 useradd的参数很类似
usermod –password PASSWORD username
总结上来讲,在Ubuntu中,adduser更适合初级使用者,因为不用去记那些繁琐的参数选项,只要跟着系统的提示一步一步进行下去就行, 缺点就是整个创建过程比较复杂而漫长;而useradd比较适合有些高阶经验的使用者,往往一行命令加参数就能解决很多问题,所以创建起来十分方便。