首先看下与useradd有关的文件:

1./usr/sbin/adduser 他的链接文件就是/usr/sbin/useradd 

[root@www ~]# ll /usr/sbin/adduser
lrwxrwxrwx. 1 root root 7 8月  16 19:51 /usr/sbin/adduser -> useradd
[root@www ~]# ll /usr/sbin/useradd
-rwxr-x---. 1 root root 103096 12月  8 2011 /usr/sbin/useradd
[root@www ~]#

3./etc/default/useradd,当只使用useradd添加用户的时候,不加任何参数,会默认使用此文件中的参数

[root@www ~]# ll /etc/default/useradd
-rw-------. 1 root root 119 11月 20 2009 /etc/default/useradd
[root@www ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100                #默认使用的用户组,目前linux有两种针对用户组的机制(私有用户组机制和公共用户组机制),而centos使用的私有用户组机制,即用户组名称与用户名称一直,而公共的默认使用100
HOME=/home                #默认使用的家目录在哪里
INACTIVE=-1                #密码过期后是否失效(是否还可以登陆)
EXPIRE=            #账号失效的日期
SHELL=/bin/bash            #默认使用的shell
SKEL=/etc/skel                #用户主目录使用的文件
CREATE_MAIL_SPOOL=yes            #创建用户的mailbox

3./etc/skel,当使用useradd添加用户时,会将此目录下的所有文件拷贝一份到家目录下

[root@www ~]# ls -a /etc/skel/
.  ..  .bash_logout  .bash_profile  .bashrc  .gnome2
[root@www ~]# useradd  stig
[root@www ~]# ls -a /home/stig/
.  ..  .bash_logout  .bash_profile  .bashrc  .gnome2
[root@www ~]#

4./etc/login.defs当创建用户时,是否需要创建用户家目录,UID/GID的取值范围等

[root@www ~]# ls -l /etc/login.defs
-rw-r--r--. 1 root root 1816 6月  28 2011 /etc/login.defs
[root@www ~]#


useradd命令:

新建或更新用户命令

语法:

useradd [-c comment] [-d home_dir]

               [-e expire_date] [-f inactive_time]

               [-g initial_group] [-G group[,...]]

               [-m [-k skeleton_dir] | -M] [-s shell]

               [-u uid [ -o]] [-n] [-r] login


useradd -D [-g default_group] [-b default_home]

               [-f default_inactive] [-e default_expire_date]

               [-s default_shell]

选项:

-D 查看或变更默认配置,即/etc/default/useradd文件,更改时与-g -b -f  -s  等选项结合

-g 指定用户所属群组,即初始用户组,会修改/etc/passwd中的第4个字段。

-G 指定用户附加群组,即每个用户可以属于多个用户组的。会修改/etc/group

-M 不建立用户的家目录

-m 自动创建用户的家目录

-e 指定用户的有效期

-n 不建立与用户名同名的群组

-r 建立系统账号

-f 指定密码过期多久后,关闭用户

-s 指定登录后取得的shell

-d 指定用户登录时的目录

实例:

[root@www1 ~]# useradd yyy
[root@www1 ~]# tail -1 /etc/passwd
yyy:x:668:670::/home/yyy:/bin/bash
[root@www1 ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@www1 ~]#
[root@www1 ~]# useradd -e "2018-07-30" -g yyy -G yanghaifu -M -n xxx
[root@www1 ~]# ll /home | grep xxx
[root@www1 ~]#
[root@www1 ~]# tail -1 /etc/passwd
xxx:x:669:670::/home/xxx:/bin/bash
[root@www1 ~]# tail -1 /etc/shadow
xxx:$6$42y56Vmh$cXxFCJQBENaf21RKpmnjkdQM5TGDMpHnH2rCl9lEXX4EtHAwyHUZ6r.B22GBEvWv78WcFwa5M9YmLGLB9aphp/:17739:0:99999:7::17742:

案例:当登陆系统时,出现-bash-4.1$的登陆页面时,是因为当前用户下的环境配置文件都删除了。而用户下的配置文件默认时拷贝的/etc/skel下所有文件的。

所以我们只要拷贝文件到家目录下重新登陆即可。

-bash-4.1$ cd /etc/skel
-bash-4.1$ cp .bash_logout .bash_profile .bashrc ~
-bash-4.1$
重新登陆即可恢复
[stig@www ~]$