“Linux下一切皆文件”。我们想要了解Linux下用户/组的管理机制,就先从认识几个相关的配置文件开始吧!
/etc/passwd:以“一行一用户”的方式,记录了每个用户的信息
/etc/shadow:记录了每个用户的密码数据
/etc/group:以“一行一组”的方式,记录了每个用户组的信息
/etc/skel:宿主目录的模板目录
/etc/login.defs:用户账号的限制的配置文件
我们详细看看每个文件中的内容!
(1)/etc/passwd
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bashavahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
--->以【:】为分隔符,共7个字段
字段1:用户名
字段2:密码占位符
字段3:用户帐号的UID号
【UID=0:系统管理员;
UID={1-499}:系统用户(1-99为distribution自行创建的系统用户、100-499为自行创建的系统用户)UID={500-60000}:普通用户】
字段4:用户所属组的GID号
字段5:用户描绘信息
字段6:用户的宿主目录
字段7:用户登录后用到的shell(/sbin/nologin表示用户以任何方式都不可登录)
(2)/etc/shadow
root:$6$XHwHKv5C$1.Q2A9E71ps5SaBE1BSy85/XbMp7CJpb3R7kFMSSkCx6l7zbYKyPH4yZjEsS3yCcbcY4ih5Ykx3GStTtKQJV81:15112:0:99999:7:::
adm:*:15422:0:99999:7:::
--->以【:】为分隔符,共9个字段
字段1:用户名
字段2:已加密的密码字段【*:表示加密后的密码;!!:表示用户被锁定】
字段3:密码改动的日期
字段4:密码不可被改动的天数【默认0:表示随时可以改】
字段5:密码需要更改的天数【默认99999:表示永不过期】
字段6:需要更改密码期限前几天提醒【默认为7】
字段7:密码过期后的宽限日期
字段8:帐号失效日期【默认为空】
字段9:保留字段【未使用】
(3)/etc/group
root:x:0:
bin:x:1:bin,daemon
--->以【:】为分隔符,共4个字段
字段1:组名
字段2:密码占位符
字段3:GID
字段4:组成员列表(用“,”隔开)
(4)/etc/skel/*
宿主目录的模板目录(新建用户时会默认自动拷贝到宿主目录下的)
其中三个重要的必须文件
.bash_profile:用户每次登录时执行这个文件的内容
.bashrc:用户每次登录shell时执行这个文件的内容
.bash_logout:用户每次退出登录时执行这个文件的内容
--->由于其特性,可以添加一些命令或设置(如alias)实现用户登录时自动运行,/root/.bashrc就可以很好的运用
--->缺少这三个文件用户也可以验证,但无法登录,su切换时出现-bash-4.1#
(5)/etc/login.defs
这个文件记录的是用户创建时所遵循的一些设置与规则
MAIL_DIR /var/spool/mail //创建用户时在此目录中新建用户的mail文件
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5 //密码最小长度
[在root下给用户设置密码并不受这个约束]
[普通用户若要给自己修改密码,其密码长度要符合/etc/login.defs内部的约束,而且要符合复杂性要求(小写字母,大写字母,数字,特殊字符必须要包含三类)]
PASS_WARN_AGE 7
UID_MIN 500 //UID的最小值
UID_MAX 60000
GID_MIN 500
GID_MAX 60000
CREATE_HOME yes //useradd创建用户时是否默认创建宿主目录
UMASK 077 //宿主目录默认的权限为700
USERGROUPS_ENAB yes //新建用户时如果没有指定组,默认新建一个同名的组
ENCRYPT_METHOD SHA512 //密码加密的方式
所以总结来看,系统创建用户的流程如图所示: