Skip to content

用户组及权限

用户基础

用户&&用户组

在互联网中,几乎所有的软件级别的解决方式,只要涉及到安全操作,基本上都是按照

  • Authentication:认证,验证用户身份
  • Authorization:授权,不同用户设置不同权限
  • Accouting|Audition:审计,准入控制 这些流程进行处理的

linux用户

  • 用户登陆成功,系统会自动分配令牌Token,包括:用户标识和组成员等信息
  • 每个用户通过User IDUID来唯一标识的,原则上来说,用户主要有两类
    • 管理员:root0
    • 普通用户:1-60000自动分配
      • 系统用户:对守护进程获取资源进行权限分配
        • 1-499(centos6以前)
        • 1-999(centos7以后)
      • 登陆用户:给用户进行交互式登陆使用
        • 500+(centos6以前)
        • 1000+(centos7以后)

linux用户组

  • 为了方便对一个或多个用户进行快捷操作,一般会将用户加入用户组中,通过对用户组的操作,从而实现对普通用户的属性批量操作能力
  • 用户组通过Group IDGID来唯一标识的
    • 管理员组:root0
    • 普通用户组:
      • 系统用户:对守护进程获取资源进行权限分配
        • 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<500centos7以后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 < fileecho " 用户名:密码" | chpasswd
  • 文件格式:用户名:密码

用户删除

userdel

  • 命令格式:userdel [option] LOGIN
  • 常用选项:
    • -f|--force:强制删除,即使用户处于登陆状态
    • -r|--remove:删除家目录和邮件目录
  • 注:正在使用用户无法删除

权限管理

权限体系

linux系统中,文件的权限,主要体现在:文件属性、操作权限中

文件操作权限

  • 读权限:允许用户读取文件内容或查看目录中的文件列表
    • r4
  • 写权限:允许用户修改文件内容或在目录中创建、删除和重命名文件
    • w2
  • 执行权限:表示该文件是可执行文件或表示用户可以进入该目录
    • x1

文件用户属性

  • 所有者(u):文件或目录的创建者,拥有对文件或目录的最高权限
  • 所属组(g):文件或目录被分配到的用户组,组内所有成员将继承该组对文件或目录的权限
  • 其他用户(o):既不是文件所有者也不是所属组成员的用户

权限的表述

字符表示二进制表示八进制表示备注
---0000无任何权限
--x0011可执行
-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-x755属主可读写可执行,属组可读可执行,其他用户可读可执行
  • 注:默认情况下,创建目录权限为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

特殊权限

除了基本的读写执行,还有三种特殊的权限,分别是SUIDSGIDSticky Bit,用于特定情况下提供更灵活的权限控制

SUID--所有者可执行位置

即使执行者不是文件的所有者,也可以执行文件,如果大写S则表示该文件没有执行权限

SGID--归属组可执行位置

与SUID类似

Sticky Bit--粘滞位--其他用户可执行位置

只对目录有效,当目录被设置时,只有该目录的所有者才能删除,命重名该目录下的文件

特殊权限一览表

权限字符表示八进制表示备注
SUIDs4如果原属主没有可执行权限,再加SUID,则显示S
SGIDs2如果原属组没有可执行权限,再加SGID,则显示S
Sticky Bitt1如果other没有可执行权限,再加Sticky Bit,则显示T

Last updated: