座敷童子 发表于 7 天前

linux特殊权限使用(suid、sgid、sbit)

一.linux特殊权限介绍

特殊权限
在linux系统中,除了r读w写x执行权限外,还存在其他的权限;下图中在权限位置上有不同的字母


二.suid


1.介绍suid之前需要了解一些问题

普通用户是否可以修改密码
可以修改自己密码
/etc/shadow文件的作用是什么
存储用户密码的文件
/etc/shadow文件的权限是什么

普通用户是否可以修改/etc/shadow文件
不可以修改,没有任何权限
为什么普通用户可以修改密码

[*]使用了passwd命令
[*]passwd在x权限位上有s权限
[*]在使用有suid权限的文件或者命令时,会以该文件的属主身份去执行该命令

2.suid作用详解

概念:命令文件的x权限位变为s,那么其他用户执行命令文件时,就会以该命令文件的属主用户去执行

[*]如果属主权限位上有x,则会显示小s
[*]如果属主权限位上没有x,则会显示大S
实例:
设置suid,普通用户可以正常修改自己的密码,取消suid,普通账户无法修改自己的密码
# useradd tdm#创建用户tdm
# passwd tdm   #设置密码
Changing password for user tdm.
New password:
BAD PASSWORD: The password is shorter than 7 characters
Retype new password:
passwd: all authentication tokens updated successfully.   #设置密码成功
# su - tdm   #切换用户tdm
Last login: Mon Jun5 11:21:29 CST 2023 on pts/0
$ passwd    #修改密码
Changing password for user tdm.
Changing password for tdm.
(current) UNIX password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.#修改密码成功
$ exit    #退出登录
logout
# chmod u-s/bin/passwd    #修改passwd权限,取消suid权限
# ll/bin/passwd   #查看命令文件权限
-rwxr-xr-x. 1 root root 27832 Jun 102014 /bin/passwd    #s变成了x
# su - tdm    #再次切换tdm账户
Last login: Mon Jun5 11:24:54 CST 2023 on pts/0
$ passwd    #修改密码
Changing password for user tdm.
Changing password for tdm.
(current) UNIX password:
New password:
Retype new password:
passwd: Authentication token manipulation error#密码修改失败问题:如果普通用户在使用passwd命令时,是以root的身份去执行的,普通用户是否能修改其他账户的密码
无法修改,只有root在使用passwd命令时后面可以接用户名称,其他账号不可以。
$ passwd test    #tdm想修改test的密码
passwd: Only root can specify a user name.    #只用root账户后面才能接用户名称
3.授权、撤销suid权限


[*]授权格式:chmod u+s 文件名称
[*]撤销格式:chmod u-s 文件名称
# touch test.txt    #创建文件
# ll test.txt   #查看文件属性
-rw-r--r--. 1 root root 0 Jun5 11:37 test.txt
# chmod u+s test.txt   #授权suid属性
# ll test.txt
-rwSr--r--. 1 root root 0 Jun5 11:37 test.txt    #文件具有suid属性
# chmod u-stest.txt    #文件取消suid属性
# ll test.txt
-rw-r--r--. 1 root root 0 Jun5 11:37 test.txt    #文件取消suid属性
# chmod 4644 test.txt   #授权suid属性
# ll test.txt
-rwSr--r--. 1 root root 0 Jun5 11:37 test.txt    #文件具有suid属性
# chmod 0644 test.txt   #文件取消suid属性
# ll test.txt
-rw-r--r--. 1 root root 0 Jun5 11:37 test.txt    #文件取消suid属性
三.sgid


1.sgid作用详解

概念:一般情况下是设置给目录使用的,主要目的是让彼得用户无法删除其他用户所创建的文件或目录

[*]如果属主权限位上有x,则会显示小s
[*]如果属主权限位上没有x,则会显示大S
实例:
给目录设置了sgid权限,在该目录下创建的文件或者目录的属组都与该目录一致
# mkdir abc    #创建目录abc
# ll
total 0
drwxr-xr-x. 2 root root 6 Jun5 13:18 abc
# chmod777abc    #授予abc权限
# ll
total 0
drwxrwxrwx. 2 root root 6 Jun5 13:18 abc
# su - tdm    #切换用户
Last login: Mon Jun5 13:15:58 CST 2023 on pts/0
$ cd/opt/abc
$ touchtest.txt    #创建test文件
$ ll
total 0
-rw-rw-r--. 1 tdm tdm 0 Jun5 13:18 test.txt    #查看文件的属主属组,都是tdm
# exit    #退出tdm账户
logout
# chmod g+s abc/    #给目录abc授予sgid权限
# ll
total 0
drwxrwsrwx. 2 root root 22 Jun5 13:18 abc    #目录具有sgid权限
# sutdm
$ ll
total 0
drwxrwsrwx. 2 root root 22 Jun5 13:18 abc
$ cd abc
$ touch test1.txt    #创建test1.txt文件
$ ll
total 0
-rw-rw-r--. 1 tdm root 0 Jun5 13:21 test1.txt    #该文件的属组跟随目录的属组是root
-rw-rw-r--. 1 tdm tdm0 Jun5 13:18 test.txt
2.授权、撤销sgid权限


[*]授权格式:chmod g+s 文件名称
[*]撤销格式:chmod g-s 文件名称

四.sbit


1.sticky bit 详解


[*]如果属主权限位上有x,则会显示小t
[*]如果属主权限位上没有x,则会显示大T
只作用在目录上,当一个目录没有设置sticky bit权限时,并且该目录对所有的用户都有读写执行权限时,普通用户在该目录下创建的文件或目录都会被其他用户删除
# ll
total 0
drwxrwxrwx. 2 root root 6 Jun5 13:30 abc    #当前目录对所有用户都有读写执行权限
# su test    #切换至test账户
$ ll
total 0
drwxrwsrwx. 2 root root 39 Jun5 13:21 abc
$ cd abc
$ ll
total 0
-rw-rw-r--. 1 tdm root 0 Jun5 13:21 test1.txt
-rw-rw-r--. 1 tdm tdm0 Jun5 13:18 test.txt
$ rm -f test1.txt   #删除test1文件
$ rm -f test.txt   #删除test文件
$ ll    #目录为空,文件已被删除
total 0当一个目录设置了sticky bit权限时,普通用户在该目录下所创建的文件或目录,只能被该文件或目录的属主用户或者root删除,其他用户无法删除彼得用户所创建的文件或者目录
drwxrwxrwx. 2 root root 6 Jun5 13:30 abc
# chmod o+t abc    #给目录授予sbit权限
# ll
total 0
drwxrwxrwt. 2 root root 6 Jun5 13:30 abc
# su test    #切换test账户
$ cd abc
$ touch test.txt    #创建文件
$ ll
total 0
-rw-rw-r--. 1 test test 0 Jun5 13:47 test.txt
$ exit
exit
# su tdm    #切换tdm账户
$ cd abc
$ ll
total 0
-rw-rw-r--. 1 test test 0 Jun5 13:47 test.txt
$ rm -ftest.txt   #tdm账户删除test文件
rm: cannot remove ‘test.txt': Operation not permitted    #操作不允许
2.授权、撤销sbit权限


[*]授权格式:chmod o+t 文件名称
[*]撤销格式:chmod o-t 文件名称

五.总结


[*]SUID: user - 占据属主的执行权限位
[*]s: 属主拥有 x 权限
[*]S:属主没有 x 权限
[*]SGID: group - 占据 group 的执行权限位
[*]s: group 拥有 x 权限
[*]S:group 没有 x 权限
[*]Sticky: other - 占据 ohter 的执行权限位
[*]t: other 拥有 x 权限
[*]T:other 没有 x 权限
类别suidsgidsbit字符表示SST出现位置用户权限位x用户组权限位x其他用户权限位x基本权限位sst数字表示法421八进制表示法400020001000生效对象用户位用户组其他用户以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

来源:https://www.jb51.net/server/326506ll8.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: linux特殊权限使用(suid、sgid、sbit)