欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

RHEL8.0快速入门系列笔记--Linux高级权限管理及ACL策略(九)

程序员文章站 2022-07-12 16:30:41
...

RHEL8.0快速入门系列笔记–Linux高级权限管理(九)

权限管理需求:
 1.只允许开发部门的所有人使用,创建删除等操作
 2.不允许其他人进入并查看该目录里所有内容
 3.只能自己管理自己(不能删除别人的文件)

1、创建目录在跳板机上
[[email protected] ~]# mkdir /data/code -p
2、目录做好权限管控
  [1] 该目录只给开发人员使用
[[email protected] ~]# ll -d /data/code/
drwxrwx---. 2 root coding 58 8月  1 22:18 /data/code
  [2] 开发所有人只能自己管理自己
测试结果:开发部门的人可以删除其他人的文件是不满足要求的,怎么办?
普通权限无法满足我们的要求,尝试使用高级权限解决
chmod o+t /data/code        //为code目录添加一个粘滞位即可满足条件

一、高级权限(了解)

(一) 高级权限有哪些
1、冒险位(SETUID)

  • 冒险位,指文件操作者(用户)临时拥有文件的拥有者权限
  • 冒险位,一般针对的是命令或者脚本文件
  • 冒险位,用字母表示是s或S;数字表示是4
  • 冒险位的设置:chmod u+s 文件名或者chmod 4xxx 文件名

2、强制位(SETGID)

  • 强制位,一般针对的是目录
    如果一个目录拥有强制位,那么任何用户在该目录里所创建的任何文件的属组都会继承该目录的属组
  • 强制位,用字母表示是s或S;数字表示是2
  • 强制位的设置:chmod g+s 文件名 或者chmod 2xxx 文件名

3、粘滞位(STICKY)

  • 粘滞位,一般针对的是公共目录
    如果一个公共目录拥有粘滞位,那么该目录下的文件,只有root和文件的创建者可以删除,其他人只能自己管理自己。(A用户不能删除B用户创建的文件)
    控制删除!针对公共目录----》任何人都可以使用
  • 粘滞位,用字母表示是t或T;数字表示1
  • 粘滞位的设置:chmod o+t 文件名或者 chmod 1xxx 文件名

(二)高级权限设置
1、冒险位举例

需求:
给一个vim命令设置危险位,目的是任何人拿vim去修改文件可以临时或得文件拥有者的权限。
[[email protected] ~]# which vim
/usr/bin/vim
[[email protected] ~]#  ll /usr/bin/vim
-rwxr-xr-x . 1 root root 2324712 Dec 22 2016 /usr/bin/vim
[[email protected] ~]# chmod u+s /usr/bin/vim
或者
[[email protected] ~]# chmod 4755 /usr/bin/vim
[[email protected] ~]#  ll /usr/bin/vim
-rwsr-xr-x . 1 root root 2324712 Dec 22 2016 /usr/bin/vim
测试验证,普通用户使用vim修改一个本没有权限修改的文件:
[[email protected] ~]# ll /etc/pssswd

(三)总结

  • 高级权限分类
    1.冒险位---->针对命令 s/S 4 chmod u+s 命令文件
    2.强制位---->针对目录 s/S 2 chmod g+s 目录
    3.粘滞位---->针对公共目录t/T 1 chmod o+t 公共目录

  • 高级权限设置

chmod 4xxx 文件名
chmod 2xxx 目录名
chmod 1777 公共目录

二、默认权限(了解)
(一)什么是文件的默认权限
所谓文件的默认权限(遮罩权限),是指用户创建文件后,文件天生就有的权限,不需要设置。
(二)文件默认权限由谁控制
文件默认权限由一个叫做umask的东西控制。
(三)umask如何控制文件默认权限
1、临时控制
什么是临时控制?
临时控制,指的是用命令umask临时设置,只在当前终端当前进程中生效。

查看当前用户的umask:
[[email protected] ~]# umask
0022
[[email protected] ~]# su - user01
[[email protected] ~]# umask
0002
注意:
1.管理员和普通用户的umask不同,就表示管理员和普通用户创建的文件的权限不同!
2.第1位数字表示高级权限;后面3位数字表示普通权限
  • 如何临时设置用户的umask?
    写在前面:
    Linux系统中,默认创建目录的最大权限0777;文件的最大权限是0666 rw-rw-rw-
[[email protected] ~]# umask 0007    临时设置root用户的umask为0007
问:umask=0007;那么在当前终端上root用户所创建目录和普通文件的权限分别是什么呢?
计算过程如下:
umask = 文件的最大权限 - 文件的默认权限
目录:
目录的默认权限=0777-umask=0777-0007=0770		rwxrwx---
普通文件:
文件的默认权限=0666=umask=0666-0007=0660		rw-rw----
说明:
1.权限用数字表示时没有负数,所以最小是0
2.默认权限规则遵循Linux系统中权限最小化原则

2、永久设置

  • 什么是永久设置
    永久配置,指的是通过修改配置文件设置,对用户的所有终端所有进程生效
  • 修改那个配置文件呢?
    1.相关配置文件介绍
全局配置文件(针对所有用户所有进程)
/etc/profile
系统和用户的环境变量信息,当用户第一次登录时,该文件被读取
/etc/bashrc
每个运行的bash信息,当用户登录和每次打开新的shell时该文件被读取

局部配置文件(针对某个特定用户以及用户的所有进程)
~/.bashrc
当前用户的bash信息,当用户登录和每次打开新的shell临时文件被读取
~/.bash_profile
当前用户环境变量,当前用户登录时,该文件被读取
~/.bash_history
保存当前用户历史命令的文件
~./bah_logout

2.如何永久设置用户的umask?

1.针对所有用户生效
# vim /etc/bashrc
在该文件的最后增加以下内容:
umask 0007

重新读取配置文件让其立刻生效
# source /etc/bashrc 或者 # ./etc/bashrc
2.针对某个用户生效
比如,只针对user01用户生效
[[email protected] ~]# vim ~/.bashrc
在该文件的最后增加以下内容:
umask 0007

三、ACL访问控制策略(扩展)
(一)ACL能做什么
1.ACL访问控制策略可以作为前面所讲权限的补充,更加细的来控制文件的权限
2.ACL策略可以针对某个用户在文件上有响应权限
3.ACL策略也可以只针对多个用户或者一个组里的所有用户在文件上有响应的权限
(二)如何设置文件的ACL策略
1、设置ACL策略(setfacl)

常用选项:
-m 修改或者设置ACL
-R 递归授权,对目录下已存在的目录或文件有acl策略,但新建的文件没有
-x 去掉某个用户或某个组的权限
-b 删除所有的acl权限
-d 默认ACL策略,只针对目录,该目录下新建的目录和问价都会继承acl策略
mask:定义除其他人和所有者外的最大权限

重点掌握

setfacl -m u:用户:rwx  /home/redhat/file1        给单个用户单独加权限
setfacl -m g:组名:rwx  /home/redhat/file1        给单个组单独加权限

setfacl -x u:用户  /home/redhat/file1       去掉某个用户的权限
setfacl -x g:组名  、home/redhat/file1        去掉某个组的权限
setfacl -b /home/redhat/file1    删除文件所有acl权限

getfacl file1        查看文件acl规则