在Linux中,每个文件都分3类权限:账户本身的权限,账户所在群组的权限和其它权限。账户和群组是多对多的关系,即一个账户可以属于多个群组,一个群组可以包含多个账户。但是,对于每一个已登录的账户,只能存在一个当前生效的群组(初始群组)。
账户管理相关配置文件如下:账户信息文件是/etc/passwd、账户密码文件是/etc/shadow、群组信息文件是/etc/group、群组密码文件是/etc/gshadow。
1、/etc/passwd文件怎么看
如上图,/etc/passwd文件中每一行为一个账户,以冒号作为分割的每个字段意思按序号分别如下:
[1] 账户名。改名使用命令usermod -l
[2] 密码,该字段已启用。账户密码在/etc/shadow文件配置
[3] UID,账户的唯一标识。影响该字段值的命令包括:useradd -u、usermod -u
[4] GID,初始群组的唯一标识,关联/etc/group文件的第3个字段。该群组为账户默认的有效群组(有效群组可以使用newgrp命令进行切换)。影响该字段值的命令包括:useradd -g、usermod -g
[5] 描述。影响该字段值的命令包括:useradd -c、usermod -c
[6] 家目录绝对路径。影响该字段值的命令包括:useradd -d、usermod -d
[7] shell,账户默认启用的shell,当为/sbin/nologin时账户无法登录。账户能使用的shell可以用命令chsh -l查询(查询结果为/etc/shells文件的内容)。影响该字段值的命令包括:useradd -s、usermod -s
2、/etc/shadow文件怎么看
如上图,文件/etc/shadow的每一行对应一个账户的密码信息,以冒号作为分割的每个字段意思按序号分别如下:
[1] 账户名,关联/etc/passwd文件的第1个字段
[2] 密码,加密后的密文,加密算法由/etc/login.defs文件中的ENCRYPT_METHOD指定,此处为SHA512。影响该字段值的命令包括:usermod -L(前置!!冻结)、usermod -U(解冻)、passwd -l(冻结)、passwd -u(解冻)、
[3] 创建日期,上图显示的是一个数字,该数字表示自1970-01-01以来所经历的天数。影响该字段值的命令包括:chage -d
[4] 密码创建之后需经历多少天才能再次修改,0表示无此限制。影响该字段值的命令包括:passwd -n、chage -m
[5] 密码创建多少天之后就过期,99999天约等于99999/365年,好几百年意味着密码不会过期。影响该字段值的命令包括:passwd -x、chage -M
[6] 密码过期前多少天开始向用户发送警告信息。影响该字段值的命令包括:passwd -w、chage -W
[7] 密码过期后还能宽限多少天,在此时间段内用户还可以登录和修改密码,过了这个时间段用户就不能够登录了。影响该字段值的命令包括:useradd -f、usermod -f、passwd -i、chage -I
[8] 失效日期,一个数字,该数字表示自1970-01-01以来所经历的天数。过了这一天用户的密码就失效,无论是否过期均不可再登录。影响该字段值的命令包括:useradd -e、usermod -e、chage -E
[9] 保留
3、/etc/group文件怎么看
如上图,文件/etc/group的每一行对应一个群组,以冒号作为分割的每个字段意思按序号分别如下:
[1] 群组名。改名使用命令:groupmod -n
[2] 密码,已启用,群组密码在/etc/gshadow文件中配置
[3] GID,群组唯一标识,由/etc/passwd文件中的第4个字段关联,作为对应账户的初始群组。影响该字段值的命令包括:groupadd -g、groupmod -g
[4] 帐号名列表,以逗号隔开。这些帐号可以主动切换为该群组的成员,如上图用户mophee(初始群组为mophee)可使用newgrp命令将其生效群组切换为mysql或mail。影响该字段值的命令包括:useradd -G、usermod -[a]G
4、/etc/gshadow文件怎么看
如上图,文件/etc/gshadow中的每一行对应一个群组的密码信息,以冒号作为分割后的每个字段意思按序号分别如下:
[1] 群组名,与/etc/group中的群组名对应
[2] 密码,加密后的密文,使用命令gpasswd group_name可设置群组密码,使用gpasswd -r group_name删除密码
[3] 群组管理员,使用命令gpasswd -A user1,... group_name 可设置群组的管理员。注:群组管理员可以为群组成员设置密码
[4] 群组成员,该字段与/etc/group的第4个字段相同且同步更改,除了使用useradd -G、usermod -G命令维护外,还可使用gpasswd -[adM]进行维护。影响该字段值的命令包括:useradd -G、usermod -[a]G
-----------------------------------------------
理论上,修改以上4个配置文件就可以进行账户管理,但不建议这样进行账户管理。Linux提供足够的命令对账户进行管理,虽然这些命令实质上也是修改这4个文件的内容,但建议使用这些命令:
useradd:添加账户
useradd mophee #建立群组mophee,建立账户mophee,建立家目录/home/mophee且权限为700。无密码,无法登录。 useradd -u 519 -g users mophee2 #建立账目mophee2并指定UID为519,指定初始群组为users useradd -r mophee3 #建立系统帐号mophee3,UID和GID范围:100~499,无家目录
usermod:修改账户
userdel:删除账户
userdel mophee #删除账户mophee: #1、从/etc/passwd和/etc/shadow删除; #2、从/etc/group和/etc/gshadow的最后一个字段除移; #3、若其初始群组无其它成员账户,则删除群组 userdel -r mophee #除了删除账户外,还删除其家目录和邮件目录
passwd:账户密码管理
passwd -S mophee #列出帐号mophee相关的密码信息
chage:修改账户密码,一般用户可用此命令修改自己的密码
chage -l mophee #列出帐号mophee相关的密码信息
groupadd:添加群组
groupmod:修改群组
groupdel:删除群组
gpasswd:群组密码、群组管理员和成员管理
groups:查看所属群组
groups mophee #列出帐号mophee所属的群组
newgrp:切换有效群组
----------------------------------------------
与账户管理有关的其它配置文件:/etc/login.defs、/etc/default/useradd(使用命令useradd时的一些默认值)。
1、文件/etc/default/useradd怎么看
GROUP:预设的群组ID
HOME:家目录的基准目录,添加账户且创建其家目录等同于在该基准目录下新建一个与账户名同名的目录,影响/etc/passwd的第6个字段
INACTIVE:设置密码过期后是否失效,-1表示不会失效,影响/etc/shadow的第7个字段
EXPIRE:密码失效日期,影响/etc/shadow的第8个字段
SHELL:默认的shell,影响/etc/passwd的第7个字段
SKEL:创建家目录是参考的初始内容,即创建家目录时会将该目录下的内容复制一份到家目录中
CREATE_MAIL_SPOOL:是否创建对应的mailbox目录,yes/no,yes时会在/var/spool/mail/目录下创建与帐号名同名的目录用于存储该账户的邮件
2、文件/etc/login.defs怎么看
MAIL_DIR:邮件目录的基准目录,一般为/var/spool/mail
PASS_MAX_DAYS:自密码创建之日起到过期的天数,影响/etc/shadow的第5个字段
PASS_MIN_DAYS:密码创建之后不允许更改的天数,影响/etc/shadow的第4个字段
PASS_MIN_LEN:设置密码允许的最短长度,已启用,由pam模块取代该功能
PASS_WARN_AGE:密码过期之前开始发送警告信息的天数,影响/etc/shadow的第6个字段
UID_MIN:小于该数字值的UID均为系统帐号,默认设为500。使用useradd且未添加-r选项时添加的账户UID均大于此值
UID_MAX:系统支持最大的UID值
GID_MIN:与UID_MIN功能类似,影响的是GID
GID_MAX:与UID_MAX功能类似,影响的是GID
CREATE_HOME:默认是否创建家目录,yes/no
UMASK:家目录默认权限的反码,即该值为077时,家目录的权限为700
USERGROUPS_ENAB:设置在使用userdel命令删除账户时,如果其初始群组下没有其它成员账户,是否将群组也删除。yes/no
ENCRYPT_METHOD:加密算法,如SHA512