useradd命令行上可以指定参数值,同时useradd存在两个默认配置文件/etc/default/useradd和/etc/login.defs,里面存在useradd创建新用户时的默认操作。useradd在创建新用户时,会更新以下文件:/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow,最后还存在一个隐性的文件/etc/skel:骨架目录。
一、配置文件/etc/default/useradd:
GROUP 在/etc/login.defs文件USERGROUPS_ENAB字段为no时生效,非常有意思
HOME 用于创建新用户主目录位置。同时/etc/login.defs文件CREATE_HOME字段对其控制
INACTIVE active活跃,该字段表示账户过期停权? -1表示永不过期,不启用
EXPIRE expire到期,表示密码到期天数,比如今天到期,但是EXPIRE=1,那么明天还可以再使用一天
SHELL 新用户使用的shell
CREATE_MAIL_SPOOL 是否使用邮箱,/etc/login.defs文件MIAL_DIR就是邮箱目录
SEKL 该字段时新用户的骨架目录,如同Windows新建用户,C盘Users目录用户文件夹下包含的隐藏文件,应该是用户环境,在每创建一个 新用户时,都会将该字段拷贝一份到新用户的主目录下,如果没有这些隐藏文件,则用户无法使用
举一个简单的例子一步到位:
修改/etc/default/useradd文件HOME字段,那么以后使用useradd命令创建用户,都会影响主目录位置
用户xie主目录从/home转到/opt目录下,shell从/bin/bash转成了/sbin/nologin
二、配置文件/etc/login.defs
/etc/login.defs文件UID_MIN 、 UID_MAX 、 GID_MIN 、 GID_MAX 分别表示useradd新建用户UID、GID最小和最大的分配范围
SYS_UID_MIN 、SYS_UID_MAX 、 SYS_GID_MIN 、 SYS_GID_MAX 时系统用户的分配范围,useradd使用-r,--system参数创建系统用户
CREATE_HOME是否生成用户主目录(家目录),yes生成,useradd会再次读取/etc/default/useradd文件HOME字段,然后在该字段后路径创建用户的家目录,no,则不会创建家目录
USERGROUPS_ENAB字段,在useradd未使用-g,--gid参数时,该字段值为yes,则useradd创建gid与登录名相同的用户组;no,useradd则会再次读取/etc/default/useradd文件GROUP字段,使用gid为100的组
useradd未使用--gid指定新用户GID,这时候/etc/login.defs文件USERGROUPS_ENAB no,则useradd启用/etc/default/useradd中GROUP字段创建一个gid为100的新用户
/etc/login.defs文件MAIL_DIR 字段规定新建用户的邮箱路径,如果/etc/default/useradd(规定是否创建邮箱)文件CREATE_MAIL_SPOOL值为yes,则useradd在/var/spool/mail创建用户邮箱
/etc/login.defs最后一个UMASK 077 表示设置掩码,该值与默认权限有关。
三、useradd常用参数结合两个配置文件(所有的参数都优先于配置文件,参数指定了,则配置文件该项目就失效了)
-e, --expiredate 新账户到期停权日期
-f, --inactive 新账户密码到期后,账户彻底被禁用的天数
这两个参数完美配合/etc/default/useradd文件EXPIRE 、 INACTIVE 字段,-e到期日期格式YYYY-MM-DD,2021-04-30(useradd -e 2021-04-30 tel)。如果没有指定-e参数,则useradd使用/etc/default/useradd文件EXPIRE字段值表示到期时间,同样useradd没有指定--inactive参数,则使用/etc/default/useradd文件INACTIVE字段值表示。
/etc/login.defs文件这四个参数可以对-e和--inactive的补充
PASS_MAX_DAYS 密码最大使用天数
PASS_MIN_DAYS 两次修改密码最小的时间间隔
PASS_MIN_LEN 密码的长度
PASS_WARN_AGE 距离密码到期日提前几天提醒用户,与--inactive密码之后的有效天数,处于两极
命令passwd可以对用户这几个参数进行修改,但是不是修改/etc/login.defs文件里的这几个参数
-e, --expire 参数对应 Password expire, 利用useradd命令可修改
-f, --inactive 参数对应Password inactive 既可以使用passwd --inactive选项修改, 也可以使用useradd --inactive选项修改
PASS_MAX_DAYS 对应 Maximum number of days ....
PASS_MIN_DAYS 对应 Minimum number of days....
PASS_WARN_AGE 对应 Number of days of warning before .....
--maximum间接把expire值给修改
-d,--home-dir 指定新用户的主目录(未指定-d参数,login.defs文件默认允许创建CREATE_HOME yes,则/etc/default/useradd文件HOME=/home创建主目录)
-d选项指定新用户家目录位置,如果再次修改新用户家目录一定要使用-m和-d两个参数移动家目录,仅仅usermod -d选项会导致tel2无法找到家目录
-g,--gid 新建用户的主要组(该组一定是事先存在的组)
-G,--groups 新建用户的附加组
-u, --uid 指定用户的uid(该uid一定是事先不存在的,因为uid在linux系统中唯一标识,操作的是uid,其次才是uid对应的登录名)
-k,--skel 指定新建用户的骨架目录。技术厉害的完全可以通过--skel参数配置个性化的新用户环境
-s,--shell 指定用户登录的shell,默认/etc/default/useradd设置登录的shell为/bin/bash
-r,--system useradd --system创建系统用户,系统用户的uid、gid不同于普通用户,/etc/login.defs文件SYS_UID_MIN等等字段设置,需要配合-m选项创建家目录,如果你需要
-U,--user-group 创建与用户名相同的组
-N,--no-user-group 不创建同名的组
END