用户组及权限
用户基础
用户&&用户组
在互联网中,几乎所有的软件级别的解决方式,只要涉及到安全操作,基本上都是按照
Authentication:认证,验证用户身份Authorization:授权,不同用户设置不同权限Accouting|Audition:审计,准入控制 这些流程进行处理的
linux用户
- 用户登陆成功,系统会自动分配令牌
Token,包括:用户标识和组成员等信息 - 每个用户通过
User ID即UID来唯一标识的,原则上来说,用户主要有两类- 管理员:
root,0 - 普通用户:
1-60000自动分配- 系统用户:对守护进程获取资源进行权限分配
1-499(centos6以前)1-999(centos7以后)
- 登陆用户:给用户进行交互式登陆使用
500+(centos6以前)1000+(centos7以后)
- 系统用户:对守护进程获取资源进行权限分配
- 管理员:
linux用户组
- 为了方便对一个或多个用户进行快捷操作,一般会将用户加入用户组中,通过对用户组的操作,从而实现对普通用户的属性批量操作能力
- 用户组通过
Group ID即GID来唯一标识的- 管理员组:
root,0 - 普通用户组:
- 系统用户:对守护进程获取资源进行权限分配
1-499(centos6以前)1-999(centos7以后)
- 普通用户:给用户使用
500+(centos6以前)1000+(centos7以后)
- 系统用户:对守护进程获取资源进行权限分配
- 管理员组:
用户和用户组
- 用户的主要组(primary group):用户必须属于一个且只有一个主组,默认创建用户时会自动创建和用户名同名的组,作为用户的主要组,因只有一个用户,又称私有组
- 用户的附加组(supplemenary group):一个用户可以属于零个或多个附属组
用户登陆和推出
bash
Rocky9的日志:
/var/log/secure
/var/log/audit/audit.log
ubuntu的日志:
/var/log/auth.log配置文件
用户和组的主要配置文件
/etc/passwd:用户及其属性信息(名称、UID、主组ID等)/etc/shadow:用户密码及其相关属性/etc/group:组及其属性信息/etc/gshadow:组密码及其相关属性
passwd文件
文件格式
bash
# 查看用户及其属性信息
[foam@rocky foam]$ cat /etc/passwd
root:x:0:0:Super User:/root:/bin/bash
# 从passwd文件中获取某一个用户信息
[foam@rocky foam]$ getent passwd foam
foam:x:501:501::/home/foam:/bin/bash| 项 | 名称 | 含义 |
|---|---|---|
| root | 用户名 | 用户登陆系统的用户名 |
| x | 密码 | 密码位 |
| 0 | UID | 用户标识号 |
| 0 | GID | 用户缺省组标识号 |
| Super User | 描述信息 | 例如存放用户全名等信息 |
| /root | 宿主目录 | 用户登陆系统后的缺省目录 |
| /bin/bash | 命令解释器 | 用户使用的shell,默认为bash |
shadown文件
文件格式
bash
[foam@rocky foam]$ sudo cat /etc/shadow
root:*:20186:0:99999:7:::| 项 | 名称 | 含义 |
|---|---|---|
| root | 用户名 | 用户登陆系统的用户名 |
* | 密码 | 加密的密码 |
| 20186 | 最后修改时间 | 用户最后一次修改密码的天数 |
| 0 | 最小时间间隔 | 两次修改密码之间的最小天数 |
| 99999 | 最大时间间隔 | 密码保持有效的最多天数 |
| 7 | 警告时间 | 从系统刚开始警告到密码失效的天数 |
| 空 | 账号闲置时间 | 账号闲置时间 |
| 空 | 失效时间 | 密码失效的绝对天数 |
| 空 | 标志 | 一般不使用,保留字段 |
gruop文件
文件格式
bash
[foam@rocky foam]$ cat /etc/group
root:x:0:| 项 | 名称 | 含义 |
|---|---|---|
| root | 组名 | 用户登陆时所在的组 |
| x | 组密码 | 组密码位 |
| 0 | GID | 组标识号 |
| 空 | 组内用户列表 | 所属该组的所有用户列表(不包含缺省组为该组的用户) |
gshadow
文件格式
bash
[foam@rocky foam]$ sudo cat /etc/gshadow
root:::| 项 | 名称 | 含义 |
|---|---|---|
| root | 组名 | 必须是系统中已包含的有效组 |
| 空 | 组密码 | 加密的组密码 |
| 空 | 管理员 | 管理员可以更改组密码和成员 |
| 空 | 组内用户列表 | 属于该组的所有用户列表 |
用户管理
用户组管理
groupadd--创建用户组
用户组上管理用户账户和文件权限的有效方式,允许将多个用户放在同一个组中,并对其内的所有用户使用相同的权限设置
- 命令格式:
groupadd [options] GROUP - 稍微常用选项:
-r|--system创建一个系统用户组,centos6之前ID<500,centos7以后ID<1000 - 一般选项
-f|--force:如果组以及存在则成功退出-g|--gid GID:新建组时指定组ID,默认系统分配,指定值不超过[GID_MIN, GID_MIX]-k|--key KEY=VELUE:不使用/etc/loin.defs中的默认值-o|--non-unique:允许创建重复GID组-p|--password PASSWORD:将密码更改为(加密过的)PASSWORD
groupmod--修改group属性
- 命令格式:`groupmod [options] GROP
- 常用选项:
-g|--gid GID:将组ID修改为GID-n|--new-name NEW_GROUP:改名为NEW_GROUP-o|--non-unique:允许使用重复的GID-p|--password PASSWORD:将密码更改为(加密过的)PASSWORD
groupdel--删除用户组
- 命令格式:
groupdel [options] GROUP - 常用选项
-f|--force:强制删除,即使是用户主组也强制删除组,会导致无主组的用户不可使用
gpasswd--更改组成员和密码
- 命令格式:
gpasswd [option] GROUP - 选项:
-a|--add USER:向组中添加用户-d|--delete USER:从组中移除用户-r|--delete-password:删除组密码-R|--restrict:向其成员闲置访问组-M|--members USER,...:批量加组-A|--administators ADMIN,...:批量设组管理员
- 注:组没有密码的时候,加组只能root操作
groupmemes--管理附加组的成员关系
- 命令格式:
groupmems [options] [action] - 选项:
-g|--group groupname:更改为指定组 (只有root)-a|--add username:指定用户加入组-d|--delete username:从组中删除用户-p|--purge:从组中清除所有成员-l|--list:显示组成员列表
用户创建
id命令
- 命令格式:
ID [username] - 选项
-a:显示详细信息,默认选项-Z|--context:仅显示安全上下文信息,要开始selinux-g|--group:仅显示GID-G|--groups:显示主组和附加组ID-n|--name:显示用户名和组名,要组合使用-nu|-ng|-nG-u|--user:仅显示UID
useradd--可以创建新用户
- 命令格式:`useradd [options] LOGIN
- 查看默认配置属性:
useradd -D
- 查看默认配置属性:
- 选项:
-u|--uid UID:指定UID-g|--gid GID:指定GID-m|--create-home:创建家目录,用于登陆-p|--password PASSWORD:设置密码,明文存储在/etc/shadow中
newusers--批量创建用户
- 命令格式:
newusers files - 文件格式:
用户名:密码:uid:gid:描述信息:家目录:登录shell
更改密码
passwd--更改用户命令
该命令主要用于更新用户密码,如果以root身份可以运行此命令指定用户名作为选项,用于更改指定用户密码
- 命令格式:
passwd 用户名 - 在rocky和centos系系统中,还可以如下方式
echo '密码' | passwd --stdin 用户名passwd --stdin 用户名 <<<密码
chpasswd--批量更改用户
从文件或命令行中读取用户名和密码对,并更新这些用户的密码,适合在系统初始化或批量更新用户密码中使用
- 命令格式:
chpasswd < file或echo " 用户名:密码" | chpasswd - 文件格式:
用户名:密码
用户删除
userdel
- 命令格式:
userdel [option] LOGIN - 常用选项:
-f|--force:强制删除,即使用户处于登陆状态-r|--remove:删除家目录和邮件目录
- 注:正在使用用户无法删除
权限管理
权限体系
linux系统中,文件的权限,主要体现在:文件属性、操作权限中
文件操作权限
- 读权限:允许用户读取文件内容或查看目录中的文件列表
r或4
- 写权限:允许用户修改文件内容或在目录中创建、删除和重命名文件
w或2
- 执行权限:表示该文件是可执行文件或表示用户可以进入该目录
x或1
文件用户属性
- 所有者(u):文件或目录的创建者,拥有对文件或目录的最高权限
- 所属组(g):文件或目录被分配到的用户组,组内所有成员将继承该组对文件或目录的权限
- 其他用户(o):既不是文件所有者也不是所属组成员的用户
权限的表述
| 字符表示 | 二进制表示 | 八进制表示 | 备注 |
|---|---|---|---|
--- | 000 | 0 | 无任何权限 |
--x | 001 | 1 | 可执行 |
-w- | 010 | 2 | 可写 |
-wx | 011 | 3 | 可写可执行 |
r-- | 100 | 4 | 可读 |
r-x | 101 | 5 | 可读可执行 |
rw- | 11- | 6 | 可读可写 |
rwx | 111 | 7 | 可读可写可执行 |
| 字符表示 | 八进制表示 | 备注 |
|---|---|---|
rw-r----- | 640 | 属主可读写,属组可读,其他用户无权限 |
rw-r--r-- | 644 | 属主可读写,属组可读,其他用户可读 |
rwxr-xr-x | 755 | 属主可读写可执行,属组可读可执行,其他用户可读可执行 |
- 注:默认情况下,创建目录权限为755,创建文件权限为644
查看权限属性
查看文件属性信息
查看权限信息 
属性操作
chown--修改文件的属主/组
- 命令格式:
chown [OPTION]... [OWNER][:[GROUP]] FILE...或chown [OPTION]... --reference=RFILE FILE... - 选项说明
- 参考
chown --help
- 参考
chgrp--可以只修改文件的属组
- 命令格式:
chgrp [OPTION]... GROUP FILE...或chgrp [OPTION]... --reference=RFILE FILE... - 选项说明
- 参考
chgrp --help
- 参考
chmod--可以修改文件的操作权限
bash
Usage: chmod [OPTION]... MODE[,MODE]... FILE...
or: chmod [OPTION]... OCTAL-MODE FILE...
or: chmod [OPTION]... --reference=RFILE FILE...
Change the mode of each FILE to MODE.
With --reference, change the mode of each FILE to that of RFILE.
-c, --changes like verbose but report only when a change is made
-f, --silent, --quiet suppress most error messages
-v, --verbose output a diagnostic for every file processed
--dereference affect the referent of each symbolic link,
rather than the symbolic link itself
-h, --no-dereference affect each symbolic link, rather than the referent
--no-preserve-root do not treat '/' specially (the default)
--preserve-root fail to operate recursively on '/'
--reference=RFILE use RFILE's mode instead of specifying MODE values.
RFILE is always dereferenced if a symbolic link.
-R, --recursive change files and directories recursively
The following options modify how a hierarchy is traversed when the -R
option is also specified. If more than one is specified, only the final
one takes effect. '-H' is the default.
-H if a command line argument is a symbolic link
to a directory, traverse it
-L traverse every symbolic link to a directory
encountered
-P do not traverse any symbolic links
--help display this help and exit
--version output version information and exit
Each MODE is of the form '[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+'.默认权限
linux创建文件的时候会有个默认的权限
- 普通文件:
644 - 普通目录:
755默认权限与umask紧密相关,决定创建文件或目录时那些权限位被屏蔽,间接决定了文件或目录的默认权限
umask计算
umask的值时从默认权限中减去得到的,如果默认权限为
- 文件:
-rw-rw-rw-|666 - 目录:
drwxrwxrwx|777当创建文件或目录时,实际权限时默认权限减去umask值后的结果 - 如果
umask值为022,则创建的文件和目录为- 文件:
666-022=644 - 目录:
777-022=755修改umask
- 文件:
- 命令格式:
umask [-p] [-s] [mode] - 选项:
umask --help
特殊权限
除了基本的读写执行,还有三种特殊的权限,分别是SUID、SGID、Sticky Bit,用于特定情况下提供更灵活的权限控制
SUID--所有者可执行位置
即使执行者不是文件的所有者,也可以执行文件,如果大写S则表示该文件没有执行权限
SGID--归属组可执行位置
与SUID类似
Sticky Bit--粘滞位--其他用户可执行位置
只对目录有效,当目录被设置时,只有该目录的所有者才能删除,命重名该目录下的文件
特殊权限一览表
| 权限 | 字符表示 | 八进制表示 | 备注 |
|---|---|---|---|
SUID | s | 4 | 如果原属主没有可执行权限,再加SUID,则显示S |
SGID | s | 2 | 如果原属组没有可执行权限,再加SGID,则显示S |
Sticky Bit | t | 1 | 如果other没有可执行权限,再加Sticky Bit,则显示T |