linux下添加新用户的背后

      一般来讲,添加用户时常使用“useradd ”命令,系统即可默认添加用户并设置UID,GID等信息,其实这背后都是可以通过手动修改系统文件实现的。

  我们知道,在/etc目录下有/etc.passwd, /etc/shadow, /etc/group等文件。这3个文件分别存放系统用户的用户名(UID,GID,家目录,使用的shell版本等),用户密码和系统内用户组信息。所以我们就手动修改这些文件来达到添加用户的目的。

    步骤如下:(以添加suse为例)

1         /etc.passwd, /etc/shadow, /etc/group 内追加内容。格式可通过查看原有文件得               到。

        ①   echo  "suse:x:527:527::/home/suse:/bin/bash"  >> /etc/passwd

       ②   echo  "suse:x:527:"  >> /etc/group

       ③     echo "$1$fegjjfefa$fwlgd8768fUbWF97o./geUnC.:15089:0:99999:7:::"  >>                          /etc/shadow

    其中③较难理解,“fegjjfefa$fwlgd8768fUbWF97o./geUnC”为MD5加密生成的用户密         码,15089为建立时间,0表示密码最短期限,99999表示密码最长期限。所以我们       要手动生成这样的字段值。可通过以下命令实现:

    #openssl passwd -1 -salt XXXXXXXX  实际密码  (-salt XXXXXXXX未添加的8为杂         质,passwd -1 一MD5加密方式生成)

    # 而15089表示从linux元年至创建用户事的天数。用此命令实现:                                         z=$[`date'+%s'`/86400]  → z=15089

  2   

       现在我们仍然不能登录新用户,因为还没有家目录

      # mkdir  /home/suse

     #chown  -R suse:suse  /home/suse (更改家目录的属主属组并限定此目录下的文件为此属主属组)

     #chmod   700     /home/suse

     但此时仍不能登录,系统并没有此用户的框架信息,环境属性信息等。

 3     拷贝   /etc/skel 下的.bash*至 用户家目录。    

     # cp  /etc/skel/.bash*   /home/suse/

     接下还要确认这些文件的权限,属主属组。

  至此,手动添加用户完成,可以以suse身份登录主机了。