Linux特殊权限及ACL权限
一、SetUID与SGID
只能用于二进制程序,脚本不能设置
- 执行者需要有该二进制程序的x权限
- 执行具有SUID权限的二进制程序,那么执行者将具有该二进制程序所有者的权限。
举例来说,/etc/passwd文件的权限是 -rw-r--r--,用户更改密码时需要对passwd文件进行写操作,root可以读写不用说,那普通用户为什么也能进行修改呢?这里就需要SUID来解决。
修改密码时是用/usr/bin/passwd工具进行修改的。setuid的作用是让执行该命令的用户以该命令拥有者的权限去执行,就是普通用户执行passwd时会拥有root的权限,这样就可以修改/etc/passwd这个文件了。
下面权限中的x就标志着SUID
[root@centos7 aubin]# ls -al /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
sgid的意思和它是一样的,即让执行文件的用户以该文件所属组的权限去执行。
二、sticky(粘滞位)
以/tmp为例,tmp为存放临时文件的文件夹。所有用户都可以对他进行读写执行。那如果A用户创建了一个文件再tmp中,B用户把给删除了。这种情况是不允许出现的。
如果设置了sticky(粘滞位),那目录下的文件就只有root和创建者有权限区读写执行,其他人是无法更改的。这就是粘滞位的作用
- Sticky(粘滞位)只能针对目录设置
- SGID与SUID可以设置目录跟二进制程序
三、特殊权限得具体设置
- SUID
sud一般情况下都设置在二进制文件上,设置在目录上没有意义
启动为进程之后,其进程的属主为原程序文件的属主 - 用法:chmod u+|-s FILE
SUID: user,占据属主的执行权限位
s:属主拥有x权限
S:属主没有x权限
[root@centos7data]#echo {1..5} >> f2 当前的文件权限是642
[root@centos7data]#ll /bin/cat
-rwxr-xr-. 1 root root 54160 Oct 31 2018 /bin/cat
[root@centos7data]#chmod u+s /bin/cat 将二进制程序的所有者加上s权限
[liu@centos7data]#ll 对于普通用户来看,属于other,只有写权限,没有查看权限。
total 4
-rw-r---w- 1 root root 3 Nov 3 12:17 f2
[root@centos7data]#su liu
[root@centos7data]#ll /bin/cat 会继承此时/bin/cat属组的权限,f1就会有读权限。
-rwsr-xr-. 1 root root 54160 Oct 31 2018 /bin/cat
[liu@centos7data]$cat f2 此时普通用户继承root身份,就可以访问当前文件内容,
1 2 3 4 5
- 文件设置SGID
启动为进程之后,其进程的属组为原程序文件的属组 - 用法:chmod g+|-s FILE
[root@centos7data]#ll
total 4
-rw-r----- 1 root root 10 Nov 3 13:15 f2 可以看到当前用户的other没有读权限
[root@centos7data]#chmod g+s /bin/cat 我们将其加上属组权限
[root@centos7data]#ll /bin/cat
-rwxr-sr-x. 1 root root 54160 Oct 31 2018 /bin/cat
[root@centos7data]#su liu 此时切换到liu用户,应该属于other组,但是给cat加了sgid权限,此时会继承/bin/cat属组的权限。
[liu@centos7data]$cat f2
1 2 3 4 5
[liu@centos7data]$echo 1>> f1 此时f1只有读权限,写入内容就没权限
bash: f1: Permission denied
- 目录设置SGID
目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组 SGID: group,占据属组的执行权限位
s: group拥有x权限
S:group没有x权限
[root@centos7data]#chgrp bin bak 将bak目录的所属组改为bin
[root@centos7bak]#chmod g+s bak
[root@centos7data]#ll
total 4
drwxrws-w- 2 root bin 43 Nov 3 14:03 bak 给bak所属组加上sgid权限
[root@centos7bak]#touch f1 f2 f3 此时在bak目录下新建的文件所属组就是bin
[root@centos7bak]#ll
total 0
-rw-r---w- 1 root bin 0 Nov 3 14:04 f1
-rw-r---w- 1 root bin 0 Nov 3 14:04 f2
-rw-r---w- 1 root bin 0 Nov 3 14:04 f3
- STICKY
在目录上设置Sticky,则在目录下创建的文件只有root与创建者有修改和删除权限
Sticky设置在文件上也毫无意义 - 用法:chmod o+|-t FILE
Sticky: other,占据other的执行权限位
t:other拥有x权限
T:other没有x权限
[root@centos7 app]# chmod o+t dir/
[root@centos7 app]# chmod o-t dir/
特殊权限数字法
SUID SGID STICKY
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
例如:
[root@centos7data]#chmod 7770 f2 将suid sgid sticky三者权限都加入到f2里
[root@centos7data]#ll
total 4
-rwsrws--T 1 root root 10 Nov 3 13:15 f2 显示结果
总结:
suid: 4 作用于二进制可执行的文件上。功能:当用户执行此文件,会继承此文件所有者的权限
sgid:2
1)作用于二进制可执行文件上。 功能:当用户执行此文件,会继承此文件所属组的权限
2)作用于目录上;功能:当用户在此目录中建新文件时,此新文件的所属组继承目录的所属组权限。
sticky:1 作用于目录上;功能:对目录的文件,只能删除自己的文件
设定文件特定属性:避免root账户误操作。
- chattr +|-i 不能删除,改名,更改
- chattr +|-a 只能追加内容
- lsattr 显示特定属性
例如:
加入chattr +i权限的文件效果:
[root@centos7data]#chattr +i f2 将f2加上权限
[root@centos7data]#ll
total 4
drwxrws-w- 2 root bin 36 Nov 3 14:04 bak
-rwsrws--T 1 root root 10 Nov 3 13:15 f2
[root@centos7data]#rm -rf f2 删除此f2就没有权限
rm: cannot remove ‘f2’: Operation not permitted
[root@centos7data]#lsattr
----i----------- ./f2
[root@centos7data]#chattr -i f2 去除此文件的权限,去除后就可以删除了
[root@centos7data]#lsattr
加入chattr +a 权限的文件效果:
[root@centos7data]#chattr +a f2 加上权限
[root@centos7data]#rm -rf f2 不能删除
rm: cannot remove ‘f2’: Operation not permitted
[root@centos7data]#echo aa >>f2 可以追加
[root@centos7data]#cat f2
1 2 3 4 5
aa
[root@centos7data]#mv f2 f3 不能移动改名
mv: cannot move ‘f2’ to ‘f3’: Operation not permitted
四、ACL权限(访问控制列表)
- ACL:Access Control List,实现灵活的权限管理
- 除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
- CentOS7 默认创建的xfs和ext4文件系统具有ACL功能,CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加
tune2fs –o acl /dev/sdb1 可以查询当前的文件系统是否支持ACL权限
mount –o acl /dev/sdb1 /mnt/test
- ACL生效顺序:所有者,自定义用户,自定义组,其他人
setfacl -m u:liu:rw f1 赋予liurw权限对文件进行修改和查看 getfacl f1 查看赋予f1的acl权限 setfacl -x u:liu f1 撤销此f1的权限 setfacl -R -m u:liu:rw dir/ 自定义dir目录及目录下的所有文件的acl权限 setfacl -R -b u:liu dir/ 清空包括dir目录内的所有文件的acl权限
例如:给单独用户赋予rw权限
[root@centos7data]#echo {1..5} > f1 新建一个f1
[root@centos7data]#ll
total 4
-rw------- 1 root root 10 Nov 3 17:12 f1 我们可以看到当前f1的权限是600
[root@centos7data]#setfacl -m u:liu:rw f1 我们给liu用户加入acl权限,让其可以读写f1权限
[root@centos7data]#getfacl f1
# file: f1
# owner: root 所有者
# group: root
user::rw-
user:liu:rw- 此时liu用户已经有读写权限(自定义用户)
group::---
mask::rw-
other::--- 其他人
[root@centos7data]#su liu
[liu@centos7data]$cat f1 由于liu属于other,但是有acl权限就可以读里边的内容
1 2 3 4 5
1
[liu@centos7data]$echo 1 >>f1 也可以追加修改里边的内容
当我们将chmod的执行权限取消了,怎么恢复呢?
下面我们来实行解决办法。
[root@centos7data]#chmod -x /usr/bin/chmod 我们将chmod程序的执行权限去掉
[root@centos7data]#chmod +x f1 此时再给文件加入执行权限,就没有权限加入
-bash: /usr/bin/chmod: Permission denied
[root@centos7data]#setfacl -m u:root:rwx /usr/bin/chmod 我们可以赋予root一个acl的rwx权限
[root@centos7data]#chmod +x /usr/bin/chmod 然后再将chmod的执行权限加上
[root@centos7data]#chmod 755 /usr/bin/chmod 调整原有的chmod的权限,此时就恢复了chmod的权限。
[root@centos7data]#ll /usr/bin/chmod
-rwxr-xr-x+ 1 root root 58656 Oct 31 2018 /usr/bin/chmod
添加用户组ACL权限:
[root@centos7data]#usermod -G liu wang 将wang加入liu附加组内
[root@centos7data]#id wang
uid=1001(wang) gid=1001(wang) groups=1001(wang),1000(liu)
[root@centos7data]#setfacl -m g:liu:rw f1 给liu用户组一个读写权限
[root@centos7data]#ll
total 4
-rw-rw----+ 1 root root 12 Nov 3 17:13 f1
[root@centos7data]#su wang 切换至wang用户,此时wang用户属于liu组内,继承liu组的acl权限
[wang@centos7data]$cat f1 就可以读里边的内容
1 2 3 4 5
1
[wang@centos7data]$echo 22 >> f1 也可以追加内容
我们还可以根据目录设置权限,下面的子文件权限和目录的ACL权限一致:
[root@centos7data]#setfacl -R -m u:liu:rw bak/ 自定义目录及目录下所有文件的acl权限
[root@centos7data]#getfacl bak/
# file: bak/
# owner: root
# group: root
user::rwx
user:liu:rw- 自定义的用户权限
group::---
mask::rw-
other::--- [root@centos7data]#getfacl bak/f1
# file: bak/f1
# owner: root
# group: root
user::rw-
user:liu:rw- 自定义的用户权限
group::r--
mask::rw-
other::-w- [root@centos7data]#setfacl -R -b bak/ 清空包括bak目录本身的所有acl权限
Linux特殊权限及ACL权限的更多相关文章
- Linux权限管理 ACL权限
ACL权限简介 在普通权限中,用户对文件只有三种身份ugo,分别为属主(u).属组(g)和其他人(o):每种用户身份拥有读(read).写(write)和执行(execute)三种权限.但是在实际工作 ...
- 权限管理——ACL权限
权限管理 ACL权限 用于解决用户对文件身份不足 命令:[root@localhost ~]#dumpe2fs -h /dev/sd3 作用:查询指定分区详细的文件系统给信息 选项 -h:仅显示超级块 ...
- Linux 账号管理与 ACL 权限配置
要登陆 Linux 系统一定要有账号与口令才行,否则怎么登陆,您说是吧?不过, 不同的使用者应该要拥有不同的权限才行吧?我们还可以透过 user/group 的特殊权限配置, 来规范出不同的群组开发项 ...
- 别人的Linux私房菜(14)Linux账号管理和ACL权限设置
用户标识符UID.GID 用户的账号信息,主要是指UID对应.组和GID对应 检查系统中是否存在用户bin:id bin 登录shell验证账号密码的步骤:找到/etc/passwd核对是否存在账号, ...
- 第14章 Linux账号管理与ACL权限设置
Linux的账号与用户组 用户标识符:UID与GID 每一个文件都有一个所有者ID和用户组ID,当我们需要查看文件属性时,系统会根据/etc/passwd和/etc/group的内容,找到对应UID和 ...
- Linux 账号管理及ACL权限设置,PAM模块简介
有效群组与初始群组: groups:有效与支持群组的观察 newgrp:有效群组的切换,后面接群组名称 在passwd文件中记录的GID就是默认的GID,就是初始群组 /etc/passwd文件结构 ...
- Linux 权限管理-ACL权限
ACL权限是为了在现有的所有者.所属组.其他人不够使用的情况下使用的,使用它必须保证文件所在的分区支持ACL df -h:查看系统所有分区信息 dumpe2fs -h /dev/vda1,可以查看分区 ...
- 权限管理(基本权限、附加权限、ACL权限)
基本权限 •访问方式(权限) 读取:允许查看内容-read r 写入:允许修改内容-write w 可执行:允许运行和切换-execute x 对于文本文件 r: cat head ...
- linux 账号管理与ACL权限设定
此文涉及命令:useradd.usermod.userdel.passwd.chage.setfacl.getfacl.su.sudo.fingr.chfn.chsh.id.groupadd.grou ...
随机推荐
- python多线程、线程锁
1.python多线程 多线程可以把空闲时间利用起来 比如有两个进程函数 func1.func2,func1函数里使用sleep休眠一定时间,如果使用单线程调用这两个函数,那么会顺序执行这两个函数 也 ...
- windows配置apache支持https
https://my.oschina.net/ososchina/blog/510065
- CockroachDB学习笔记——[译]Hello World
原文链接:https://www.cockroachlabs.com/blog/hello-world/ 原作者:Spencer Kimball 原文日期:Jun 4, 2015 译:zifeiy 数 ...
- Python3 Selenium自动化web测试 ==> 第十节 WebDriver高级应用 -- xpath语法
学习目的: xpath定位是针对常规定位方法中,最有效的定位方式. 场景: 页面元素的定位. 正式步骤: step1:常规属性 示例UI 示例UI相关HTML代码 相关代码示例: #通过id定位 dr ...
- QFramework 使用指南 2020(六):脚本生成(4)小结与补充
我们花了四篇文章,介绍了 QF 中的脚本生成功能. 实际上 QF 中的脚本生成是有两种的,第一种就是我们现在学习的 ViewController + Bind 模式. 这种模式是为除 UGUI 以外的 ...
- Java工程师学习指南第8部分:分布式系统理论与实践
本文整理了微信公众号[Java技术江湖]发表和转载过的分布式相关优质文章,想看到更多Java技术文章,就赶紧关注本公众号吧. 细聊分布式ID生成方法 近期面试Java后端的一些感悟 本专栏介绍分布式的 ...
- Vue的作用域插槽
一.通常情况下都是父组件传递数据给子组件进行展示的(无法改变子组件的展示方式):而作用域插槽允许子组件通过slot向父组件传递数据,类似React中的“以函数为子组件”,由父组件决定渲染的内容(包含绑 ...
- java SerialPort串口通讯的使用
api文档 http://fazecast.github.io/jSerialComm/javadoc/com/fazecast/jSerialComm/package-summary.html ma ...
- HDU4513 【mannacher算法】
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=4513 Problem Description 吉哥又想出了一个新的完美队形游戏! 假设有n个人按顺序站在 ...
- python xlrd模块
一.什么是xlrd模块? Python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库. 二.使用介绍 1.常用单元格中的数据类型 类型 含义 e ...