inux基于用户身份对资源访问进行控制,Linux 属于多用户的操作系统
按建立方式分类:
按权限分类:
linux用户组分为基本组(私有组)和附加组(公共组)。
每一个用户账号至少属于一个组,这个组称为该用户的基本组(或私有组);若该用户同时还包含在其他的组中,则这些组称为该用户的附加组(或公共组)。
对组账号设置的权限将适用于组内的每一个用户账号。
Linux系统中的每一个用户账号都有一个数字形式的身份标记,称为UID,对于操作系统来说,UID是区分用户的基本依据,原则上每个用户的UID号应该是唯一的,root用户的UID的固定值为0。1~999的UID默认保留给程序用户使用,普通用户组使用的UID号在1000~60000之间
与UID类似,每一个组账号也有一个数字形式的身份标识,称为GID。root组帐号的GID号为固定值0,而程序组账号的GID号默认为1~999,1000~60000的GID号默认分配给普通组使用。
Linux 将用户的信息及密码全部通过文件的方式进行保存
存储用户信息
基于系统运行和管理需要,所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改。
- root:x:0:0:root:/root:/bin/bash
- operator:x:11:0:operator:/root:/sbin/nologin
| 第一列: 用户名称 | 第二列: 密码占位符 | 第三列: UID | 第四列: GID | 第五列: 详细信息 | 第六列: 宿主目录 | 第七列: 登录shell信息 |
| root | x | 0 | 0 | root | /root | /bin/bash |
| operator | x | 11 | 0 | operator | /root | /sbin/nologin |
Shadow文件又被称为“影子文件”,其中保存有各用户账号的密码信息,因此对shadow文件的访问应该进行严格限制,默认只有root用户能够读取文件中的内容,并且不允许root直接编辑该文件中的内容。
- root:$6$83f7/8SSOXkkAg8e$9a1rqdPn/n8ppeCVJU7TBxW.UcWiAyQcRFwRlykd8P4fUkNnyOmAo3GwxuUYAOn3QfTsAgR0C/t8Z9UYtPjOb.::0:99999:7:::
- bin :*:18353:0:99999:7:::
- daemon:*:18353:0:99999:7:::
用户默认的配置文件:
- # useradd defaults file
- GROUP=100 # 默认账户加入至 GID100
- HOME=/home # 账户默认主目录前缀为 /home
- INACTIVE=-1 # 禁用账号过期功能 (-1)
- EXPIRE= # 账号到期时间 , 不设置即不启用
- SHELL=/bin/bash # 指定用户默认所使用的 shell
- SKEL=/etc/skel # 指定用户所使用的 SHELL 环境文件
- CREATE_MAIL_SPOOL=yes # 创建账户名同名的文件作为账户的邮箱,系统邮箱位置在 /var/spool/mail 目录中
用户限制文件:cat /etc/login.defs | grep -v ^# | grep -v ^$
- MAIL_DIR /var/spool/mail # 指定系统账户的邮箱所在位置
- PASS_MAX_DAYS 99999 # 密码最大有效期
- PASS_MIN_DAYS 0 # 两次密码修改最小间隔
- PASS_MIN_LEN 5 # 密码最小长度
- PASS_WARN_AGE 7 # 密码失效前天前 N 天提示用户
- UID_MIN 1000 # 本地自定义账户最小 UID
- UID_MAX 60000 # 本地自定义账户最大 UID
- SYS_UID_MIN 201 # 本地系统账户最小 UID
- SYS_UID_MAX 999 # 本地系统账户最大 UID
- GID_MIN 1000 # 本地自定义组最小 GID
- GID_MAX 60000 # 本地自定义组最大 GID
- SYS_GID_MIN 201 # 本地系统组最小 GID
- SYS_GID_MAX 999 # 本地系统组最大 GID
- CREATE_HOME yes # 默认创建用户主目录
- UMASK 077 # 用户主目录 umask 码
- USERGROUPS_ENAB yes #当用户删除后同名组没有成员时,同时删除此组
- ENCRYPT_METHOD SHA512 # 算法加密密码
用户账号初始配置文件
添加一个新的用户账号后,useradd命令会在用户的宿主目录中建立一些初始配置文件。这些文件来自于账号模板目录/etc/skel,基本上都是隐藏文件。

.bash_logout:用户每次退出登录时执行
.bash_profile:用户每次登录时执行 局部配置文件 /etc/profile全局配置文件
.bashrc:每次进入新的Bash环境时执行(当然也包括登录系统)
-u: 指定 UID 标记号
-d: 指定宿主目录,缺省为 /home/用户名
-e: 指定帐号失效时间
-f: 密码失效宽限期
-g: 指定用户的基本组名(或UID号)
-G: 指定用户的附加组名(或GID号)
-M:不为用户建立并初始化宿主目录
-s: 指定用户的登录Shell
- # 创建一个普通用户user1
- useradd user1
-
- # 创建一个普通用户user2,UID为2000
- useradd -u 2000 user2
-
- # 创建一个程序用户user3,不用登陆,不用家目录
- useradd -M -s /sbin/nologin user3
-
- # 添加一个临时账号。账户名为 thomas、初始组为 root、账户主目录为 /admin
- # 密码宽限期为 7 天、账号有效使用时间为从即日起30天
- useradd -g root -d /admin -f 7 -e 2023-12-15 thomas
-l: 更改用户帐号的登录名称
-L: 锁定用户账户
-U: 解锁用户账户
-u: 修改 UID 标记号
-d: 修改宿主目录
-e: 修改帐号失效时间
-g: 修改用户的基本组名(或UID号)
-G: 修改用户的附加组名(或GID号)
-s: 修改用户的登录Shell
- # 将thomas账户名改为 lemon
- usermod -l lemon thomas
-
- # 将lemon账户锁定
- usermod -L lemon
-d: 清空用户的密码,使之无需密码即可登录
-l: 锁定用户帐号
-S: 查看用户帐号的状态(是否被锁定)
-u: 解锁用户帐号
-i: 设置密码宽限期 (shadow 区域 7)
-n: 设置2次密码修改间隔时间 (shadow 区域 4)
-x: 设置密码有效期 (shadow 区域 5)
-w: 设置密码过期前警告天数 (shadow 区域 6)
--stdin: 从标准输入中读取密码
- # 通过标准输入更改指定账户密码
- echo "123456" | passwd --stdin user3
-
- # 对 thomas 账户进行密码设定,要求
- # 密码有效期 7 天、提前3天给予警告、2次密码修改间隔时间为 2 天
- passwd -x 7 -w 3 -n 2 thomas
-m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M 密码保持有效的最大天数。
-W 用户密码到期前,提前收到警告信息的天数。
-E 帐号到期的日期。过了这天,此帐号将不可用
-d 上一次密码更改的日期
-i 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期
- # 查看thomas账户密码设定情况
- chage -l thomas

- # 设置thomas密码有效期是90天
- chage -M 90 thomas
-
- # 设置 thomas 登陆时强制修改口令
- chage -d 0 thomas
-
- # 强制 thomas登陆时修改口令 , 且密码可随时更改 ,
- # 但密码最大有效期为 90 天 , 提前 15 天发送警报消息,有效期至 2100-10-10
- chage -d 0 -m 0 -M 90 -W 15 -E 2100-10-10 thomas

查看组相关信息
- rpc:x:32:
- cgred:x:995:
- named:x:25:
- marry:x:1001:
- zhangsan:x:30001:
| 第一列:组名称 | 第二列:组密码占位符 | 第三列:GID号 | 第四列:附加组成员 |
| zhangsan | x | 1001 | 无 |
| marry | x | 30001 | 无 |
查看组密码相关信息
- rpc:!::
- cgred:!::
- named:!::
- marry:!::
- zhangsan:!::
| 第一列:组名称 | 第二列:组密码 | 第三列:管理员 | 第四列:附加组成员 |
| zhangsan | ! | 无 | 无 |
| marry | ! | 无 | 无 |
-g 组ID号 指定组ID号
- # 指定张三组的id号为30001
- groupadd -g 30001 zhangsan
-
- cat /etc/group | tail -5

-a: 向组内添加一个用户
-d: 从组内删除一个用户成员
-M:定义组成员列表,以逗号分隔
- # 将 zhaoliu 添加到 zhangsan组中
- gpasswd -a zhaoliu zhangsan
-
- # 查看 /etc/group 文件查看zhangsan组
- zhangsan:x:30001:zhaoliu # 由此可见zhangsan组的附加人员
-
- # 将zhangsan组的附加成员zhaoliu删除
- gpasswd -d zhaoliu zhangsan
-
- # 在 张三组中 一次性添加多个附加组员
- gpasswd -M zhaoliu,wangwu zhangsan # zhangsan:x:30001:zhaoliu,wangwu
-g: 更改指定组的 GID
-n: 更改指定组组名
- # 更改 zhangsan组名称为fawaikuangtu,更改id为 20001
- groupmod -g 20001 -n fawaikuangtu zhangsan #fawaikuangtu:x:20001:zhaoliu,wangwu
- # 查看 zhaoliu 的账户信息
- id zhaoliu
![]()
- # 查询 zhaoliu 的组信息
- groups zhaoliu # zhaoliu : zhaoliu fawaikuangtu
- # 安装finger命令
- yum install -y finger
-
- # 查看 zhaoliu 相关信息
- finger zhaoliu
