Linux下不使用useradd如何创建新用户

大家都知道,Linux下使用useradd user1 就可以轻松创建一个用户,但是如果不用这个命令,如何创建用户呢?useradd 创建一个用户后,查看/etc/passwd就会发现最下面多了一个user1的信息,那么我们直接把这些信息写入文件就可以创建一个用户了。这里因为我之前已经创建了stu3了,所以从stu4开始。

    [root@linuxidc home]# echo stu4:x:504:504::/home/stu4:/bin/bash >>/etc/passwd
    [root@linuxidc home]# tail -1 /etc/passwd
    stu4:x:504:504::/home/stu4:/bin/bash
    [root@linuxidc home]# id stu4        #用id命令查看用户是否存在;
    uid=504(stu4) gid=504 groups=504
    [root@linuxidc home]#
   

    但是这里我们发现,虽然创建了一个用户,但是这个用户其实什么也干不了,
    [root@linuxidc ~]# passwd stu4
    Changing password for user stu4.
    passwd: Authentication token manipulation error
    [root@linuxidc ~]# su - stu4
    su: warning: cannot change directory to /home/stu4: 没有那个文件或目录
    -bash-3.2$ exit
    logout
    [root@linuxidc ~]#
   
    这是因为我们并没有为该用户创建家目录,那么这里要用到一个目录,/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添加用户的时候,这些配置文件是联动的,相互关联的,如果自己修改的匹配不上,以后使用过程中会报错。 

相关推荐