首页 > 系统相关 >linux中文件的特殊权限setgid-setuid-sbit

linux中文件的特殊权限setgid-setuid-sbit

时间:2023-12-24 13:44:07浏览次数:39  
标签:setuid tmp 文件 linux chmod setgid izm5e2q95pbpe1hh0kkwoiz 权限 root

1.SetUID
一.SetUID的功能
SetUID主要是给命令提供一个root权限,就是命令运行时拥有root用户权限,命令运行结束后root权限消失
1.只有执行的二进制程序才能设定SUID权限

2.命令执行者要对该程序有用x(执行)权限

3.命令执行者在执行该程序时获得该程序文件属主(所有者)的身份(在执行程序的过程中灵魂附体为文件的属主)

4.SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效.

passwd
passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码
修改密码是向/etc/shadow写入数据的
但是/etc/shadow文件的权限是---------,只有root用户可以操作,普通用户连看都不可以
[root@izm5e2q95pbpe1hh0kkwoiz ~]# ll /etc/shadow
---------- 1 root root 1097 Dec 10 17:02 /etc/shadow
所以passwd命令拥有SetUID权限,让普通用户在修改自己密码的时候,短暂拥有root权限,
修改完密码之后,root权限也就没有了
passwd命令中其他组拥有的权限是r-x,普通用户划归在其他组中,对应上面第2条,命令执行者要对该程序有用x(执行)权限


[root@izm5e2q95pbpe1hh0kkwoiz ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd

上面所有者的权限是rws
s权限代表的就是SetUID功能

cat
cat命令没有SetUID权限,所以普通用户不能查看/etc/shadow文件内容

[eternity@izm5e2q95pbpe1hh0kkwoiz ~]$ ll /bin/cat
-rwxr-xr-x. 1 root root 54080 Nov 6 2016 /bin/cat
[eternity@izm5e2q95pbpe1hh0kkwoiz ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied

二.设定SetUID的方法
4代表SUID

chmod 4755 文件名
chmod u+s 文件名

4代表给所有者设定SUID权限

# 创建文件abc,权限为644
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# ll abc
-rw-r--r-- 1 root root 0 Dec 13 10:06 abc
# 赋予文件abc SUID权限
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# chmod u+s abc
# 此时显示一个大写的S,这是报错的标识
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# ll abc
-rwSr--r-- 1 root root 0 Dec 13 10:06 abc

为什么会报错呢?
2.命令执行者要对该程序有用x(执行)权限
第2条要求就是,命令执行者对程序拥有执行权限,此时除了root之外其他人对命令都没有执行权限
所以就会报错

怎么解决???
权限需要设置为755,也就是rwxr-xr-x
此时所有人都有x执行权限

[root@izm5e2q95pbpe1hh0kkwoiz tmp]# ll abc
-rwSr--r-- 1 root root 0 Dec 13 10:06 abc
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# chmod u-s abc
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# ll abc
-rw-r--r-- 1 root root 0 Dec 13 10:06 abc
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# chmod 755 abc
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# chmod u+s abc
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# ll abc
-rwsr-xr-x 1 root root 0 Dec 13 10:06 abc

三.取消SetUID的方法

chmod 755 文件名
chmod u-s 文件名

四.危险的SetUID
1.关键目录应严格控制写权限.比如"/","/usr"等

2.用户的密码设置要严格遵守密码三原则

3.对系统中默认应该具有SetUID权限的文件作一个列表,定时检查有没有这个之外的文件被设置了SetUID权限(通过shell脚本去查看)

假如对vim设定了SetUID权限,则普通用户就可以使用vim编辑任何的文件,造成系统问题

2.SetGID
一.SetGID针对文件的作用
对文件常用,对目录不常用.对文件主要也就是二进制程序,主要是提升程序执行者的所属组,使程序执行者拥有较高的权限,跟SetUID类似.
1.只有可执行的二进制程序才能设置SGID权限

2.命令执行者要对该程序拥有x(执行)权限

3.命令执行在执行程序的时候,组身份升级为该程序文件的属组

4.SetGID权限同样只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效.

locate
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# whereis locate
locate: /usr/bin/locate /usr/share/man/man1/locate.1.gz
# locate拥有SetGID权限,用户对locate有x执行权限,
# 运行locate命令的时候用户当前组可以切locate的所属组slocate
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# ll /usr/bin/locate
-rwx--s--x 1 root slocate 40520 Apr 11 2018 /usr/bin/locate

# locate查询时,查询的文件是mlocate.db文件
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# ll /var/lib/mlocate/mlocate.db
-rw-r----- 1 root slocate 7489360 Dec 13 03:07 /var/lib/mlocate/mlocate.db

# mlocate.db文件对其他人的权限时---,没有任何权限

# 但是使用locate的时候,因为locate拥有SetGID权限,
# 用户在使用locate命令时可以使组用户的当前组转换为locate的组slocate,
# 而mlocate.db的所属组也是slocate,slocate组对mlocate.db文件拥有r读权限,
# 所以此时用户的所属组为slocate,拥有了对mlocate.db的读权限

二.SetGID针对目录的作用
1.普通用户必须对此目录拥有r和x权限,才能进入此目录

2.普通用户在此目录中的有效组会变成此目录的属组

3.若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组.

# 在/tmp文件夹下创建test文件夹
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# mkdir test
# 创建的默认权限
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# ll -d test
drwxr-xr-x 2 root root 4096 Dec 13 10:55 test
# 给test目录修改权限为777,并增加SetGID权限
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# chmod 2777 test
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# ll -d test
drwxrwsrwx 2 root root 4096 Dec 13 10:55 test
# 切换到eternity普通用户
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# su - eternity
Last login: Fri Dec 13 09:51:16 CST 2019 on pts/0
# 进入/tmp文件夹
[eternity@izm5e2q95pbpe1hh0kkwoiz test]$ cd /tmp
# 在/tmp文件夹下创建aaa文件
[eternity@izm5e2q95pbpe1hh0kkwoiz tmp]$ touch aaa
# aaa文件的所属组为eternity
[eternity@izm5e2q95pbpe1hh0kkwoiz tmp]$ ll aaa
-rw-rw-r-- 1 eternity eternity 0 Dec 13 10:56 aaa
# 进入/tmp/test文件夹
[eternity@izm5e2q95pbpe1hh0kkwoiz tmp]$ cd /tmp/test
# 创建bbb文件
[eternity@izm5e2q95pbpe1hh0kkwoiz test]$ touch bbb
# 此时bbb文件的所属组为root组
# test文件夹有SetGID权限,他的创建者所属组为root
# 普通用户在test文件夹下创建文件的时候,
# 文件的所属组会默认的切换为创建test文件夹的用户的所属组,
# 此时是root用户创建的test文件夹,root的组为root组,
# 所以新建的文件的组默认为root组
[eternity@izm5e2q95pbpe1hh0kkwoiz test]$ ll bbb
-rw-rw-r-- 1 eternity root 0 Dec 13 10:57 bbb


三.设定SetGID

chmod 2755 文件/文件名
chmod g+s 文件/文件名

四.取消SetGID

chmod 755 文件/文件名
chmod g-s 文件/文件名

3.Sticky BIT
一.SBIT粘着位作用
针对普通用户,在有粘着位的文件夹下,每个用户只能创建删除自己的文件,不能删除其他用户的文件
1.粘着位目前只对目录有效

2.普通用户对该用户有用w和x权限,即普通用户可以在此目录拥有写入全新啊

3.如果没有粘着位,因为普通用户拥有w权限,则可以删除此目录下所有文件,包括其他用户建立的文件.
一旦赋予了粘着位,
除了root可以删除所有文件,普通用户就算拥有w权限,
也只能删除自己建立的文件,但是不能删除其他用户建立的文件.

二.设置和取消粘着位
设置粘着位

chmod 1755 目录名
chmod o+t 目录名

取消粘着位

chmod 777 目录名
chmod o-t 目录名

总结
SetUID只对文件生效
SetGID对文件和目录生效
Sticky BIT只对目录生效

拥有SetUID权限显示
rwsr-xr-x

即所有者的执行权限x替换为了s

拥有SetGID权限
rwxr-sr-x

即所属组的执行权限x替换为了s

拥有Sticky BIT权限
rwxrwxrwt

即其他人的执行权限x替换为了t

 

标签:setuid,tmp,文件,linux,chmod,setgid,izm5e2q95pbpe1hh0kkwoiz,权限,root
From: https://www.cnblogs.com/cheyunhua/p/17924309.html

相关文章

  • windows通过 桥接Usb 电缆连接linux 主机并通信的方法
    在Windows上通过USB转串口线连接Linux主机并进行通信,可以参考以下步骤:首先,插入USB转串口线到电脑的USB接口,此时系统会自动识别设备并安装驱动。检查设备管理器的端口(COM和LPT)中是否出现相应的串口信息。启动USB/IP项目以启用常见的开发人员USB场景,例如访问智能卡读取器等。确保你的......
  • Linux安装无线网卡驱动
    您可以通过以下步骤来实现:首先,将Linux安装盘插入电脑的USB接口。打开电脑的BIOS设置,将启动顺序设置为优先从USB设备启动。重启电脑并进入Linux安装界面。在安装过程中,选择“手动分区”选项,然后为Linux系统分配一个适当的分区。接下来,选择“安装Linux内核”选项,并等待安装完成。安装......
  • linux-网络接口的绑定与组合(bond 网桥的创建)
    网络接口的绑定一、虚拟接口将多个网络逻辑接口连接在一起:1、实现冗余、避免故障2、提高吞吐率原理:非在物理网卡上设置、而是通过多个物理网卡聚合成一个虚拟的网卡(外部网络访问的就是本机的虚拟网卡的地址)二、通过networkmanger实现绑定模式balanceactive-backup--......
  • linux 中正则匹配限制词首和词尾
     001、\<或者\b限制词首[root@pc1test]#lsa.txt[root@pc1test]#cata.txt##测试数据010203040506070809101112131415137831204331617181920212223242524332233443262728293031323334353637383940[root@......
  • linux 中 grep命令限制匹配次数
     001、测试数据,,匹配末尾为_一个数字的数据[root@pc1test2]#lsa.txt[root@pc1test2]#cata.txt##测试数据NC_052532.1tRNAscan-SETRNAD-GUC_1NC_052532.1tRNAscan-SETRNAD-GUC_229NC_052532.1tRNAscan-SETRNAS-......
  • linux修改内核参数禁止OOM机制
    Linux内核有个机制叫OOMkiller(Out-Of-Memorykiller),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽,内核会把该进程杀掉,监控是正常的。防止重要的系统进程触发(OOM)机制而被杀死:可以设置参数/proc/PID/oom_adj为-17,临时关闭linux内核的OOM机制......
  • Linux目录结构
    视频地址: https://space.bilibili.com/204411292目录简介在Linux中一切皆文件,这些文件按照一定的规则存放在不同的目录当中。为了能够快速找到文件及以后的操作的规范性,我们必须记清楚Linux的目录结构。Windows以多根的方式组织文件,如C:\D:\E:\,而Linux以单跟/的方式组织文件。......
  • linux 中 grep命令正则表达式匹配电话号码
     001、测试数据[root@pc1test]#lsa.txt[root@pc1test]#cata.txt010203040506070809101112131415137831204331617181920212223242524332233443262728293031323334353637383940[root@pc1test]#grep-E"1[3456789][0-9]......
  • NOI Linux Sublime Text 使用指南
    感觉noilinux的vscode还是太鸡肋,所以用了用subline,莫名好用下面是食用指难。首先打开,不好看,我们可以点击这里更改相应主题然后我们要点file打开文件夹打开/关闭侧边栏的快捷键是Ctrl+K+B(K和B同时按)然后sublime不能输入,直接用文件输入输出。所以这样的分屏比较优......
  • 深度探索Linux操作系统 —— Linux图形原理探讨
    文章目录系列文章目录前言一、渲染和显示1、渲染2、显示二、显存1、动态显存技术2、BufferObject三、2D渲染1、创建前缓冲2、GPU渲染3、CPU渲染(1)映射BO到用户空间(2)使用CPU在映射到用户空间的BO上进行绘制四、3D渲染1、创建帧缓冲2、渲染Pipleline3、交换前缓冲和后缓冲(1)谁......