系统集成04-用户和权限管理

系统集成04-用户和权限管理

1 管理用户和组

1.1 用户的基础概念

Linux是一个多用户的操作系统

  • 所有要使用系统资源的用户需要先向系统管理员申请一个账号,之后以此账号进入系统

  • 可以在系统上建立多个用户,而多个用户可以在同一时间内登录至同一系统执行不同的任务,并不会相互影响

用户

  • 用户是能够获取系统资源的权限的集合

  • 每个用户都会分配一个特有的id号-uid。

用户UID

UID指的是用户的ID(UserID),一个用户UID标示一个给定用户,UID是用户的唯一标示符,通过UID可以区分不同用户的类别(用户在登录系统时是通过UID来区分用户,而不是通过用户名来区分)

  • 超级用户:也称为root用户,它的UID为0,超级用户拥有系统的完全控制权,可以进行修改、删除文件等操作,也可以运行各种命令,所以在使用root用户时要十分谨慎;
  • 普通用户: 也称为一般用户,它的UID为1000-60000之间,普通用户可以对自己目录下的文件进行访问和修改,也可以对经过授权的文件进行访问;
  • 虚拟用户:也称为系统用户,它的UID为1-999之间,虚拟用户最大的特点是不提供密码登录系统,它们的存在主要是为了方便系统的管理。

区分用户类别

通过查看不同用户UID来区分用户的类别为超级用户、普通用户或是虚拟用户

查看UID命令:

id [option] [user_name]

常用参数:

  • -u,-user 只输出有效UID
  • -n,-name 对于-ugG输出名字而不是数值
  • -r,-real 对于-ugG输出真实ID而不是有效ID

UID为0时,标识的是超级用户(即root用户),UID为1000-60000之间,标识的是普通用户,UID为1-999之间,标识的是虚拟用户(即系统用户)

1.2 管理用户

在Linux系统中,每个普通用户都有一个账号,包括用户名、密码和主目录等信息。除此之外,还有一些系统本身创建的特殊用户,具有特殊的存在意义,其中最重要的用户就是管理员账户,默认的用户名为root(也就是超级用户)

管理用户能通过操作命令行能够对用户文件进行创建、修改、删除更改密码等操作

创建用户-useradd

useradd命令可用来创建用户账号,并保存在/etc/passwd文件中

语法:

useradd [options] user_name
  • -u指定用户UID
  • -o配合“-u”属性,允许UID重复
  • -g指明用户所属基本组,既可为用户组名,也可为GID(该组必须已存在)
  • -d指定用户的home目录,并自动创建用户home目录
  • -s指明用户的默认shell程序
  • -D显示或更改默认配置

修改用户

usermod可用来修改用户账号的各类信息

语法:usermod [options] user_name

  • -u 修改用户UID
  • -g 修改用户所属用户组
  • -I 修改用户账号名称
  • -d 修改用户home目录
  • -s 修改用户默认shell程序

删除用户

userdel用于删除指定的用户以及与该用户相关的文件

语法:

userdel [options] user_name
  • -f强制删除用户账号,即使用户当前处于登录状态
  • -r删除用户,同时删除与用户相关的所有文件
  • -h显示命令的帮助信息

修改用户密码

passwd用来修改用户的密码, root用户可以修改任何用户的密码,普通用户只能修改自身的密码

语法:

passwd [OPTION] ... user_name
  • -n 设置修改密码最短天数
  • -x 设置修改密码最长天数
  • -w 设置用户在密码过期前多少天收到警告信息
  • -i 设置密码过期多少天后禁用账户
  • -d 删除用户密码
  • -S 显示用户密码信息

1.3 用户组的基础概念

  • 用户组具有相同特性用户的逻辑集合,通过组的形式使得具有相同特性的多个用户能够拥有相同的权限,便于管理
  • 每一个用户都拥有自己的私有组
  • 同一组内的所有用户可以共享该组下的文件
  • 每一个用户组都会被分配一个特有的id号-gid(组id)

用户组GID

用户组ID(GroupID,简称为GID)和用户UID类似,作为唯一标识符来标示系统中的一个用户组

  • 在添加账户时,默认情况下会同时建立一个与用户同名且UID和GID相同的组;
  • GID与UID都会将0赋予给超级用户或者具有超级用户的用户组(也就是root用户组);
  • 系统会预留一些较前的GID给虚拟用户(也称为系统用户)

查看用户组gid以及每个用户组下拥有的用户数量:

id [option] [user_name]

用户组分类

  • 普通用户组:可以加入多个用户;
  • 系统组:一般加入的用户为系统用户;
  • 私有组:也称为基本组,在创建用户时,如果没有为其指明所属用户组,则会为该用户定义一个私有的用户组,且该用户组名称与用户名同名

用户和用户组之间的关系:

  • 一对一:一个用户可以存在一个用户组中,作为组中的唯一成员;
  • 一对多:一个用户可以存在多个用户组中,该用户具有多个组的共同权限;
  • 多对一:多个用户可以存在一个用户组中,这些用户具有和组相同的权限;
  • 多对多:多个用户可以存在多个用户组中,其实就是以上三种关系的扩展

1.4 管理用户组

随着用户的不断增多,用户权限的把控变得复杂繁重,对系统的安全管理产生负面影响,用户组的加入,使得每一个用户至少属于一个用户组,从而便利了权限管理

用户和用户组管理是系统安全管理的重要组成部分,通过操作命令行能够对用户组文件进行创建、修改、删除以及关联用户等操作

创建组

groupadd可用来创建一个新的用户组,并将新用户组信息添加到系统文件中

语法:

groupadd [options] group_name
  • -f 如果组已存在,则成功退出
  • -g 为新用户组所使用的GID
  • -h 显示此帮助信息并退出
  • -o 允许创建有重复GID的组
  • -p 为新用户组使用此加密过的密码
  • -r 创建一个系统账户

修改组

groupmod可用来更改群组识别码或者名称

语法:

groupmod [options] group_name
  • -g 修改为要使用的GID
  • -h 显示此帮助信息并退出
  • -n 修改为要使用的组名称
  • -o 允许使用重复的GID
  • -p 更改密码(加密过的)

删除组

Groupdel可用来删除用户组,但若是用户组中包含一些用户,需先删除掉用户后再删除用户组

语法:

groupdel [options] group_name
  • -f即便是用户的主组也继续删除
  • -h显示此帮助信息并退出

关联用户和组

gpasswd可以用来添加或删除用户到组中

语法:

gpasswd [option] group_name
  • -a 向组GROUP中添加用户USER
  • -d 从组GROUP中添加或删除用户
  • -M 设置组GROUP的成员列表
  • -A 设置组的管理员列表
  • -r 移除组GROUP的密码
  • -R 向其成员限制访问组GROUP
  • -Q 要chroot进的目录

openEuler下涉及到管理用户信息的文件一般有以下两种:

  1. /etc/passwd:用户账号信息文件

    /etc/passwd文件每一行由七个字段的数据组成,且字段之间用“:”隔开

    image-20230505215414217

    • 在这个文件中,保存着系统中所有用户的主要信息,每一行代表着一个记录;
    • 每一行用户记录中定义了用户各个方面的相关属性
  2. /etc/shadow:用户账号信息加密文件(又称为“影子文件”)

    /etc/shadow文件只有超级用户(root用户)具有读权限,其他用户均没有权限,从而保证了用户密码的安全性

    image-20230505215504113

    • 用于存储系统中用户的密码信息
    • 由于/etc/passwd文件允许所有用户读取,容易导致密码泄露,因此将密码信息从该文件中分离出来,单独放置在/etc/shadow文件中
  3. /etc/group

    image-20230505215546404

  4. /etc/gshadow

    image-20230505215607724

2 文件权限管理

2.1 文件权限的基本概念

权限是操作系统用来限制对资源访问的一种机制,权限一般分为读、写、执行. 在Linux系统中,每个文件或目录都具有特定的访问权限、所属用户及所属组,通过这些规则可以限制什么用户、什么组可以对特定的文件执行什么样的操作.

下面以一段使用ls -l命令呈现出来的文件信息讲解文件权限

drwxr-xr-x. 2 root root 4096 Jun 1 14:00 shili

image-20230505215904000

文件类型

上述示例中第一个字段的第一位(drwxr-xr-x.)为文件类型, 在linux中有着7种文件类型

文件类型 解释说明
- 普通文件-除去其他六种类型文件
d 目录(文件夹)
b 块设备文件-可随机存取装置
c 字符设备文件-键盘、鼠标等一次性读取装置
l 符号链接文件-指向另一文件(linkfile)
p 命名管道文件(piep)
s 套接字文件(socket)

权限位

Linux文件或目录的权限位是由9个权限位来控制的,每三位为一组,都是[r]、[w]、[x]三个参数的组合

  • [r]代表的是读权限(read), 允许读取文件内容或目录下全部内容
  • [w]代表的是写权限(write), 允许写文件或在目录下创建、删除文件
  • [x]代表的是执行权限(execute), 允许执行文件或进入目录
  • 若是没有权限,则用“-”表示

image-20230505220200663

权限位的二进制表示

权限位按照属主权限、属组权限、其他用户权限分为三个字段, 在每个字段中, 读、写、执行可以表示为三位二进制数, 还是以上面的例子来说:

位置 权限代号 二进制 十进制 权限详情
属主权限 rwx 111 7 文件属主可读可写可执行
属组权限 r-x 101 5 同组用户可读不可写可执行
其他用户权限 r-x 101 5 其他用户可读不可写可执行

2.2 文件权限的操作命令

修改文件权限-chmod

文件调用权限针对于文件所有者,所属组以及其他人,使用chmod可以对文件的调用权限进行修改

语法:

chmod [OPTION] ... MODE [,MODE] ... FILE ...
  • 操作对象:
    • u: 用户user, 表示文件或目录所有者
    • g: 用户组group, 表示文件或目录所属组
    • o: 其他用户other
    • a: 所有用户all
  • 操作符:
    • +: 添加权限
    • -: 取消权限
    • +: 赋值权限

修改文件属主属组-chown

管理员(root)利用chown可以将指定文件的所有者改为指定的用户或组

语法:

chown [OPTION]... [OWNER][:[GROUP]]FILE...
  • -c: 显示更改的部分的信息
  • -f: 忽略错误信息
  • -h: 修复符号链接
  • -v: 显示详细的处理信息
  • -R: 处理指定目录以及其子目录下的所有文件

修改文件属组-chgrp

通过chgrp命令可以对文件或目录的所属群组进行更改

语法:

chgrp [OPTION] ... GROUP FILE...
  • -v:显示指令执行过程
  • -c:效果类似“-v”参数,但是只回报更改的部分
  • -f:不显示错误信息
  • -h:只修改符号连接的文件,而不对其他任何相关文件进行变动
  • -R:递归处理,即将指定目录下的所有文件及子目录一并处理

遮罩码-umask

通过umask命令可以指定在建立文件时进行权限掩码的预设

语法:

umask: umask [-p] [-S] [mode]
  • -p:显示命令名称
  • -S:文字形式表示权限掩码

2.3 文件的ACL

在没有ACL技术之前,Linux系统对文件的权限控制仅可划分文件的属主、用户组、其他用户三类,随着技术的发展,传统的文件权限控制已经无法适应复杂场景下的权限控制需求,比如说一个部门(即一个用户组group)存在有多名员工(即用户user01、user02…),针对于部门内不同职责的员工,会为其赋予不同的权限,如为user01赋予可读写权限,为user02赋予只读权限,不为user03赋予任何权限,此时由于这些员工属于同一部门,就无法为这些不同的员工进行权限的细化。为ACL(AccessControlList)访问控制列表技术应运而生,使用ACL权限控制可以提供常见权限(如rwx、ugo)权限之外的权限设置,可以针对单一用户或组来设置特定的权限

设置文件的ACL-setfacl

getfacl [option] file...
  • -a:仅显示文件访问控制列表
  • -d:仅显示默认的访问控制列表
  • -c:不显示注释表头
  • -e:显示所有的有效权限
  • -E:显示无效权限
  • -s:跳过只有基条目(baseentries)的文件

获取文件的ACL-getfacl

setfacl[option] {-m|-M|-x|-X...} file...
  • -m修改指定文件的acl,不能和-x混合使用
  • -x删除后续参数
  • -b删除所有acl设定参数
  • -k移除预设的acl参数
  • -R递归设置acl参数
  • -d预设目录的acl参数

更改文件或目录的ACL-chacl

chacl [acl/R/D/B/l/r] pathname... /chacl-bacldaclpathname... /chacl-ddaclpathname...
  • -b同时修改文件权限和默认目录权限
  • -d设置目录的默认权限
  • -R只删除文件的权限
  • -D只删除目录的权限
  • -B删除所有权限
  • -I列出所有文件和目录权限
  • -r设置所有目录和子目录下的权限

3 其他权限管理

Linux中默认账户为普通用户,但是在更改系统文件或者执行某些命令时,都需要以root用户的权限才能进行,此时就需要将默认的普通用户更改为root用户

切换用户身份:

  • su:此命令在切换用户时,仅切换root用户身份,但shell环境仍为普通用户
  • su–:此命令在切换用户时,用户身份和shell环境都会切换为root用户
  • sudo:此命令可以允许普通用户执行管理员账户才能执行的命令
posted @ 2023-05-06 16:35  Qurare  阅读(137)  评论(0编辑  收藏  举报