Linux 特殊权限总结

1. 特殊权限:SUID,SGID,STICKY

特殊权限

  • SUID 作用于二进制可执行文件上,用户将继承此程序所有者的权限

  • SGID 作用于二进制可执行文件上,用户将继承此程序所有组的权限 作于于目录上, 此目录中新建的文件的所属组将自动从此目录继承

  • STICKY 作用于目录上,此目录中的文件只能由所有者自已来删除

安全上下文:

  • 进程以某用户的身份运行,进程是发起此进程用户的代理,因此以此用户的身份和权限完成所有操作

  • 权限匹配模型:

    • 判断进程的属主,是否为被访问的文件属主,如果是,则应用属主的权限,否则进入第2步

    • 判断进程的属主,是否属于被访问的文件属组,如果是,则应用属组的权限,否则进入第3步

    • 应用other的权限

1.1 特殊权限SUID

默认情况下:用户发起的进程,进程的属主是其发起者,因此,其以发起者的身份在运行

SUID的功能:用户运行某程序时,如果此程序拥有SUID权限,那么程序运行为进程时,其进程的属主不是发起者,而是程序文件自己的属主

前提:进程有属主和属组;文件有属主和属组

  • 任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限

  • 启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组

  • 进程访问文件时的权限,取决于进程的发起者

    • 进程的发起者,同文件的属主:则应用文件属主权限

    • 进程的发起者,属于文件属组;则应用文件属组权限

    • 应用文件“其它”权限

二进制的可执行文件上SUID权限功能:

  • 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

  • 启动为进程之后,其进程的属主为原程序文件的属主

  • SUID只对二进制可执行程序有效

  • SUID设置在目录上无意义

管理文件的SUID权限

chmod u+s FILE...
chmod 4xxx FILE
chmod u-s FILE...

展示位置:属主的执行权限位,如果属主原本有执行权限,显示为小写s,否则,显示为大写S

示例

[root@centos ~]#ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 33600 Apr  7  2020 /usr/bin/passwd
[root@centos ~]#
1.2 特殊权限SGID

功能:当目录属组有写权限,且有SGID权限时,那么所有属于此目录的属组,且以属组身份在此目录中新建文件或目录时,新文件的属组不是用户基本组,而是此目录的属组

展示位置:属组的执行权限位,如果属组原本有执行权限,显示为小写s,否则,显示为大写S

二进制的可执行文件上SGID权限功能:

  • 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

  • 启动为进程之后,其进程的属组为原程序文件的属组

管理文件的SGID权限

chmod g+s FILE...
chmod 2xxx FILE
chmod g-s FILE...

目录上的SGID权限功能:

默认情况下,用户创建文件时,其属组为此用户所属的主组,一旦某目录被设定了SGID,则对此目录有
写权限的用户在此目录中创建的文件所属的组为此目录的属组,通常用于创建一个协作目录

管理目录的SGID权限

chmod g+s DIR...
chmod 2xxx DIR
chmod g-s DIR...

示例:

在/home下创建一个目录为sysadms,要求所属的组为sysadm,组成员可以读写,其他用户没有任何权限

同组成员在目录下创建的文件所属组也为sysadm组

mkdir /home/sysadms
chown :sysadm /home/sysadms
ll -d /home/sysadms
chmod 700 /home/sysadms
#同组成员在目录下创建的文件所属组也为sysadm组,即,添加一个sgid权限
chmod g+s /home/sysadms
touch /home/sysadms/testfile
1.3 特殊权限 Sticky 位

功能:对于属组或全局可写的目录,组内的所有用户或系统上的所有用户对此目录都能创建新文件或删除所有的已有文件,
如果为此类目录设置sticky权限,则每个用户能创建新文件,且只能删除自己的文件

展示位置:其他用户执行权限位,如果其他用户原本有执行权限,显示为小写t,否则,显示为大写T

具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
sticky 设置在文件上无意义

管理文件的Sticky权限

chmod o+t DIR...
chmod 1xxx DIR
chmod o-t DIR...

示例

[root@centos8 ~]#ll -d /tmp
drwxrwxrwt. 15 root root 4096 Dec 12 20:16 /tmp

注意:系统上的/tmp和/var/tmp目录默认均有sticky权限

1.4 特殊权限数字法:
suidsgidsticky八进制权限
0000
0011
0102
0113
1004
1015
1106
1117

示例

chmod 4777 /tmp/a.txt

权限位映射

SUID: user,占据属主的执行权限位

  • s:属主拥有x权限

  • S:属主没有x权限

SGID: group,占据属组的执行权限位

  • s: group拥有x权限

  • S:group没有x权限

Sticky: other,占据other的执行权限位

  • t:other拥有x权限

  • T:other没有x权限

基于八进制方式赋权时,可用默认的三位八进制数字左侧再加一位八进制数字,例如:chmod 1777

1.5 设定文件特殊属性

设置文件的特殊属性,可以访问 root 用户误操作删除或修改文件

不能删除,改名,更改

chattr +i file

只能追加内容,不能删除,改名

chattr +a file

显示特定属性

lsattr 

示例

[root@centos /data]#chattr +i dir/
[root@centos /data]#lsattr dir/
-------------------- dir/fstab
-------------------- dir/f1.txt
[root@centos /data]#lsattr *
-------------------- dir/fstab
-------------------- dir/f1.txt
-------------------- file.txt
-------------------- test.txt
[root@centos /data]#ll
total 4
drwxr-xr-x 2 root root 33 Mar 29 14:08 dir
-rw-r--r-- 1 root root  0 Mar 29 14:07 file.txt
-rw-r--r-- 1 root root 12 Mar 29 14:04 test.txt
[root@centos /data]#rm -rf dir/
rm: cannot remove 'dir/fstab': Operation not permitted
rm: cannot remove 'dir/f1.txt': Operation not permitted
[root@centos /data]#lsattr
-------------------- ./test.txt
-------------------- ./file.txt
----i--------------- ./dir
[root@centos /data]#chattr -i dir/
[root@centos /data]#lsattr
-------------------- ./test.txt
-------------------- ./file.txt
-------------------- ./dir
[root@centos /data]#

2. facl:file access control lists

文件的额外赋权机制,在原来的u,g,o之外,另一层让普通用户能控制赋权给另外的用户或组的机制

查看额外的权限

getfacl FILE

额外赋权

赋权给用户:

setfacl -m u:song:rw FILE

赋权组:

setfacl -m g:song:rw FILE

撤销赋权

setfacl -x u:USERNAME FILE
setfacl -x g:GROUPNAME FILE
setfacl -b FILE

示例:

把/etc/fstab拷贝到/var/tmp/fstab,文件所有是root

cp /etc/fstab /var/tmp/

任何人不具备执行权限,但是harry用户有读写权限,natasha用户没有任何权限

setfacl -m u:harry:rw- /var/tmp/fatab
setfacl -m u:natasha:--- /var/tmp/fatab
getfacl /var/tmp/fatab

示例

# 窗口1
[root@centos /data]#ll file.txt
-rw-r--r-- 1 root root 0 Mar 29 14:07 file.txt
[root@centos /data]#
[root@centos /data]#setfacl -m u:song:rw /data/file.txt  # 给用户 song 增加读写 /data/file.txt 的权限,这样用户 song 就可以读写文件
[root@centos /data]#
[root@centos /data]#setfacl -m u:song:- /data/file.txt   # 去掉用户 song 对 /data/file.txt 的所有权限,就是不能在读写文件了
[root@centos /data]#

# 另开一个窗口2
[root@centos /data]#su - song
Last login: Mon Mar 29 10:33:40 CST 2021 on pts/0
[song@centos ~]$cat /data/file.txt                     # 默认可以查看
[song@centos ~]$echo "testetstetst" >>/data/file.txt   # 默认不能写
-bash: /data/file.txt: Permission denied
[song@centos ~]$ll /data/file.txt                      # 增加 facl 后查看
-rw-rw-r--+ 1 root root 0 Mar 29 14:07 /data/file.txt
[song@centos ~]$cat /data/file.txt                     # 可以查看
[song@centos ~]$echo "testetstetst" >>/data/file.txt   # 增加 facl 后可以写入数据了
[song@centos ~]$ll /data/file.txt                      
-rw-r--r--+ 1 root root 13 Mar 29 14:19 /data/file.txt 
[song@centos ~]$cat /data/file.txt                     # 去掉 facl 权限后无法查看了,提示权限不足
cat: /data/file.txt: Permission denied
[song@centos ~]$echo "testetstetst" >>/data/file.txt   # 去掉 facl 权限后无法写入文件了,提示权限不足
-bash: /data/file.txt: Permission denied
[song@centos ~]$
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 第一部分 Linux 操作环境 第1章 Linux基础 1.1 登录Linux系统 1.2 Linx的shell 1.3 shell的一些基本命令 第2章 文本编辑 2.1 vi文本编辑器 2.2 emacs文本编辑器 第3章 Linux文件系统操作 3.1 文件类型 3.2 文件系统目录结构 3.3 目录操作的基本命令 3.4 文件操作的基本命令 3.5 显示字符串echo 3.6 命令行中使用扩展符 第4章 文件权限与文件共享 4.1 存取权限 4.2 改变文件的存取权限 4.3 特殊权限位SUID、SGID、Sticky 4.4 硬链接 4.5 符号链接 第5章 文件管理工具 5.1 正则表达式 5.2 排序文件 5.3 查找文件 5.4 搜索文件内容 5.5 命令记录 5.6 压缩文件、解压缩文件与打包文件 5.7 RPM包管理 第6章 Linux进程、管道和重定向 6.1 进程的属性 6.2 进程的终止 6.3 进程和作业控制 6.4 命令行中使用操作符 6.5 Linux系统启动和进程层次结构 6.6 系统启动和关机 6.7 输入、输出重定向 6.8 使用文件描述符 6.9 输入和输出重定向的组合使用 6.10 管道(pipe) 第7章 C语言开发工具 7.1 编写程序的工具 7.2 编C语言程序 7.3 make工具 7.4 gdb调试工具 第8章 Bourn Again Shell编程 8.1 bash脚本的建立和运行 8.2 shell的变量 8.3 shell脚本位置参数的传递 8.4 控制结构语句 8.5 其他几个有用的语句 8.6 数值处理 8.7 数组 8.8 函数 8.9 here文档 8.10 exec命令 8.11 trap命令 8.12 调试脚本程序 第二部分 Linux 内核分析与实践 第9章 编译Linux内核 9.1 Linux内核 9.2 查找并且下载一份内核源代码 9.3 部署内核源代码 9.4 配置内核 9.5 编译内核和模块 9.6 了解Linux内核的启动 9.7 应用grub配置启动文件 9.8 编写制作Linux启动盘的shell脚本程序 9.9 Linux源程序的目录分布 9.10 学习Linux的常用工具 9.11 查看Linux内核状况 9.12 编程序检查系统状况 9.13 Linux编程环境 第10章 系统调用 10.1 一个简单的例子 10.2 系统调用基础知识 第11章 进程创建 11.1 进程是什么 11.2 进程的产生 11.3 进程的消亡 / 退出 11.4 实验1 11.5 实验2 11.6 实验3 第12章 /proc文件系统 12.1 /proc文件系统 12.2 现有proc文件系统中各个文件的含义 12.3 怎样使用/proc文件系统 12.4 seq file 12.5 proc文件系统的内部实现机制 12.6 实验一:使用proc文件系统的一个简单例子 12.7 实验二:利用/proc文件系统显示缺页状态 12.8 实验三:seq file使用例子 第13章 内核模块 13.1 什么是内核模块 13.2 模块实现机制 13.3 使用内核模块 13.4 实例 第14章 内存管理 14.1 虚拟内存管理 14.2 Linux虚拟内存管理 14.3 实例 14.4 综合实验的原理 14.5 综合实验的实施 第15章 内核时钟与定时器 15.1 关于时钟和定时器 15.2 Linux系统时钟 15.3 Linux系统定时器 15.4 时钟命令 15.5 实验一:一个应用定时器的简单例子 15.6 实验二:统计关于进程的时间 15.7 实验三:更进一步的进程时间统计 第16章 共享内存 16.1 进程间通信和共享内存 16.2 共享内存的API 16.3 共享内存在Linux中的实现 第17章 同步机制 17.1 同步机制 17.2 Linux中几种同步机制的实现 17.3 设计我们自己的同步机制 第18章 文件系统 18.1 文件系统基本概念 18.2 文件系统的抽象 18.3 VFS文件系统 18.4 ext2文件系统 18.5 对文件的操作 18.6 块读写与页缓存 18.7 本章总结 18.8 实验:添加一个文件系统 18.9 附录:优秀的日志文件系统——ext3

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值