首先看下与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 ~]$