linux特殊权限是e,linux中文件的特殊权限(SetUID/SetGID/SBIT)

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

来源:https://www.cnblogs.com/eternityz/p/12386469.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: setuid和setgidLinux文件/目录的权限设置,用于控制文件/目录的访问权限setuid是指当一个文件被执行时,该文件的所有者权限将被提升为执行者的权限,即使执行者的权限低于文件所有者的权限。这样可以使得一些需要高权限才能执行的程序在低权限用户下也能够执行。 setgid是指当一个目录被创建时,该目录的所有者权限将被设置为创建者的组权限,即使创建者的权限低于目录所有者的权限。这样可以使得在该目录下创建的文件都属于同一组,方便组内成员共享文件。 总之,setuid和setgidLinux系统非常重要的权限设置,可以提高系统的安全性和灵活性。 ### 回答2: 在Linux系统,每一个文件和目录都有其所属的用户和用户组。setuid和setgid是可以应用于文件和目录的特殊权限,它们可以极大地影响一个文件或目录的访问权限和执行权限。 首先,setuid权限使得在执行文件时,运行该执行文件的进程会暂时拥有该文件所有者的权限,即使是普通用户也可以执行一些仅有管理用户才能运行的程序,如passwd命令等。这样做可以让普通用户执行一些操作,提高了系统的可维护性和可操作性。 其次,setgid权限则允许指定一个文件或目录的用户组,从而提供更精细的权限控制。在设置了setgid权限的目录里的新文件和目录,其所属用户组会被自动设置为目录的用户组,从而实现了成员共享文件的精细控制。同时,如果一个具有setgid权限的可执行文件被运行,那么它会以其所属的用户组的身份运行,在这个用户组里所具有的权限也会拥有。 实际上,在不恰当的使用setuid和setgid权限时,也可能会带来系统的风险和不安全性。因此,在设置文件和目录的权限时,我们需要慎重考虑应用setuid和setgid权限的必要性,尽量减少不必要的风险。对于一些敏感的系统操作或者权限限制较大的文件和目录,我们也要加强对其权限的管理和控制,从而最大限度地保证系统安全和运行稳定。 ### 回答3: 在Linux文件系统,每个文件/目录都有一个所有者和一个所属组,由于这个特性,一些特殊权限被引入,其包括setuid和setgidsetuid和setgidLinux文件系统的一个非常重要的安全特性,可以在执行该文件时,临时将当前用户的权限更改为文件所有者或文件所属组的权限,从而使得用户可以利用文件所有者或文件所属组的权限来执行一些对于当前用户本身需要特殊授权的操作,而无需为此特别授权。 setuid和setgid分别是set user ID 和set group ID的缩写。当文件所有者或文件所属组有一个特殊权限被设置为“s”时,就表示这个文件setuid或setgid权限。具体来说,setuid使得一个文件在执行时将有效用户ID更改为文件所有者的ID,setgid则将有效组ID更改为文件所属组的ID。 对于一个拥有setuid权限的可执行文件,当一个普通用户执行它时,其所拥有的权限就可以被限制在执行该文件的组或者用户的权限内,从而保证了系统对文件的操作安全性。在实际效果setuid和setgid的应用范围很广,可以应用于各种场合,比如sudo程序、passwd等。 总而言之,setuid和setgidLinux文件系统的一种特殊权限,可以为普通用户提供执行高特权操作的托管服务,从而提高系统的安全性和可用性。同时,根据需要设置setuid和setgid权限具有升级或降级普通用户权限的功能,对于Linux服务器的管理和运维也有很大的帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值