大家都知道,使用useradd user1 就可以轻松创建一个用户,但是如果不用这个命令,如何创建用户呢?
useradd 创建一个用户后,查看/etc/passwd就会发现最下面多了一个user1的信息,那么我们直接把这些信息写入文件就可以创建一个用户了。这里因为我之前已经创建了stu3了,所以从stu4开始。
[root@lcc home]# echo stu4:x:504:504::/home/stu4:/bin/bash >>/etc/passwd
[root@lcc home]# tail -1 /etc/passwd
stu4:x:504:504::/home/stu4:/bin/bash
[root@lcc home]# id stu4 #用id命令查看用户是否存在;
uid=504(stu4) gid=504 groups=504
[root@lcc home]#
但是这里我们发现,虽然创建了一个用户,但是这个用户其实什么也干不了,
[root@lcc ~]# passwd stu4
Changing password for user stu4.
passwd: Authentication token manipulation error
[root@lcc ~]# su - stu4
su: warning: cannot change directory to /home/stu4: 没有那个文件或目录
-bash-3.2$ exit
logout
[root@lcc ~]#
这是因为我们并没有为该用户创建家目录,那么这里要用到一个目录,/etc/skel 这个目录是linux在创建用户时的一个模板目录,创建一个用户后,都会将该目录下的所有内容复制到用户的家目录里,目录里的内容都是隐藏文件(.开头),那么我们把这个目录复制一份到/home下
cp -a /etc/skel /home/stu4
此时stu4就可以登录了,但你会发现还是有问题的,因为如果你用ls -l查看stu4目录
drwxr-xr-x 3 root root 4096 10-21 05:27 stu4
会发现他的所有者和所有组都是root,我们一开始在/etc/passwd里面输入的uid为504,gid也是504,那么我们就要创建一个群组了,
echo stu4:x:504: >>/etc/group
进入/etc/group里面查看 会出现 stu4:x:504:
这就是我们新建的组,然后再把/home/stu4的所有者和所有组修改下
chown -R stu4:stu4 /root/home/stu4 #-R 将目录下所有文件都改变
接下来还有一个文件需要修改,那就是/etc/shadow ,这个文件是存放用户密码的文件,我们虽然新建了一个用户,但这个用户并没有密码,所有是无法登陆的,可以通过su - stu4 命令切换过去,但是无论是root,还是stu4 用户自己都无法创建密码,那么我们在/etc/shadow下,再创建一下:
echo stu4:!!:16383:0:99999:7::: >>/etc/shadow
因为这个文件是只读的,所以强制保存退出,这样再用root为他添加密码就可以了。
这样我们新建的stu4就可以正常使用了, 虽然没有直接用命令来的简单,但这样我们能了解创建一个用户的过程。最后还要告诉大家的是,这些配置文件在修改前最后都做好备份,以免出问题,因为我们在使用useradd添加用户的时候,这些配置文件是联动的,相互关联的,如果自己修改的匹配不上,以后使用过程中会报错。