系统用户以UID方式运行,包括用户UID和组GID,名称只是个别名,用户名更改后不会更改相关权限和属性
UID(User Identification)用户身份证明,由系统自动生成的标识符ID,全局唯一
四个配置文件
- /etc/passwd(存储用户属性信息)
- /etc/shadow(存储用户密码信息)
- /etc/group(存储用户组属性信息)
- /etc/gshadow(存储用户组密码信息)
/etc/passwd
以冒号为分隔符
root:X:0:0:root:/root:/bin/bash
用户名:口令:UID:GID:注释:主目录:登录Shell
口令:实际密码存在/etc/shadow中,用x表示
UID:root为0,保留1-99,普通用户100-65535
GID:同上,具体属性存储在 /etc/group
- 初始组,一个用户可以归属多个组,但是只能一个初始组,针对默认属性权限,比如创建目录默认的组
主目录:默认/home/用户名
登录Shell:Shell是用户与Linux系统之间的接口(用户 <–>shell<–>内核),也就是命令行(系统支持多种shell)
- /bin/bash,默认shell
- /bin/sh,没有运行posix的bash(posix可以理解为系统标准接口)
- /sbin/nologin,禁止登入用户,这个主要作用是给服务使用的,避免使用root用户导致服务被攻击后拿到root用户对系统造成伤害
/etc/shadow
为什么密码不直接存在passwd中呢?passwd是可以编辑的这样就会导致用户的密码安全问题,而shadow是不可编辑的
root:$6$rxI8h8lpty::0:99999:7:::
用户:SHA密码:密码修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段
- shadow不仅仅存储了密码,还存储了密码策略
- 默认密码策略规则 /etc/login.defs(只针对新建用户)
- 已新建用户使用 chage命名修改
密码策略还不能满足linux的用户安全控制,还需要密码的复杂度/etc/pam.d/system-auth
/etc/group
root:x:0:test,test1
组名:密码:GID:组下的用户
- 组密码,存在/etc/gshadow,一般组密码都是不需要设置
/etc/gshadow
root:$6$8H6O9u2Mxm$tntiZ::test
组名:密码:组管理员:组用户
- 组密码的用处是什么:用户切换初始组时组外的用户通过newgrp命令切到组内,不然只能组内用户切换
- 组管理员:除了root外的用户也可以操作用户组添加删除操作
3个操作
1、用户操作:
- useradd 添加
- usermod 修改
- userdel 删除
- passwd 修改密码
- 语法:命令 【参数】用户
常用参数:
-u UID
-g 初始组
-G 附加组
-d 家目录
-s shell
2、用户组操作:
- groupadd
- groupmod
- groupdel
常用参数:
-g GID
-n 修改组名
3、管理组操作:
- gpasswd
- 语法:gpasswd 【参数】 组名
常用参数:
不加参数为设置密码
-A 指定管理员
-a 添加用户
-d 删除用户
-r 删除密码
id 命令可以用于查看用户和组的信息