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身份登录主机了。