SUID、SGID、SBIT归纳总结

SUID、SGID、SBIT归纳总结,第1张

概述由于网络上对于这三个特殊权限解释的内容太过简短,没看明白前就结束了教程,在自己试验后写总结以便其他人能方便了解 1、SUID 前提:SUID对于一个文件有什么限制和功能 只有可执行文件才能设定 SetUID 权限,对目录设定 SUID,是无效的。 用户要对该文件拥有 x(执行)权限。 用户在执行该文件时,会以文件所有者的身份执行。 SetUID 权限只在文件执行过程中有效,一旦执行完毕,身份的切换

由于网络上对于这三个特殊权限解释的内容太过简短,没看明白前就结束了教程,在自己试验后写总结以便其他人能方便了解

1、SUID

前提:SUID对于一个文件有什么限制和功能

只有可执行文件才能设定 SetUID 权限,对目录设定 SUID,是无效的。
用户要对该文件拥有 x(执行)权限。
用户在执行该文件时,会以文件所有者的身份执行。
SetUID 权限只在文件执行过程中有效,一旦执行完毕,身份的切换也随之消失。

1.1权限设置方法 1.1.1字母设置法

chmod u+s 文件名 添加SUID权限
chmod u-s 文件名 删除SUID权限

1.1.2数字设置法

chmod 4755 文件名

1.2 passwd例子

passwd命令是linux系统中用来修改密码的命令.系统中所有用户都可以使用.
而passwd命令改密码的行为是通过修改/etc/shadow文件来实现.
先看看passwd的权限

[[email protected] ~]# cd /bin[[email protected] bin]# ls -l passwd-rwsr-xr-x. 1 root root 27832 Jan 30  2014 passwd

可以看到第4位为S,表示设置了SUID权限,在这个情况下任何普通用户都可以修改他自身的密码(root可以修改所有用户的密码)

[[email protected] Desktop]$ passwdChanging password for user user1.Changing password for user1.(current) UNIX password: New password: Retype new password: passwd: all authentication tokens updated successfully.

user1用户密码修改成功,如果把passwd的SUID权限去掉会发生什么呢?

[[email protected] bin]# chmod u-s passwd[[email protected] bin]# ll passwd-rwxr-xr-x. 1 root root 27832 Jan 30  2014 passwd

我们再次更改user1密码

[[email protected] Desktop]$ passwdChanging password for user user1.Changing password for user1.(current) UNIX password: New password: Retype new password: passwd: Authentication token manipulation error

虽然用户有执行 passwd 命令的权限,但无修改 /etc/shadow 文件的权限,因此最终密码修改失败
普通用户运行passwd命令,系统创建的passwd进程的属主由默认为"程序发起者"变为了passwd的属主
而passwd的属主是root,所以普通用户其实是在用root的权限修改/etc/shadow文件.最后passwd命令执行结束,passwd进程被关闭.

2、sgiD

sgiD主要实现如下两种功能:

1.让执行者临时拥有属组的权限(对拥有执行权限的二进制程序有效)
2.在其目录中创建的文件自动继承该目录的用户组

2.1权限设置方法 2.1.1字母设置法

chmod -R g+s 文件名 添加sgiD权限
chmod -R g-s 文件名 删除sgiD权限

2.1.2数字设置法

chmod 2777 文件名

2.2实例
[[email protected] Desktop]# ls -ld sgidd/drwxrwxrwx. 2 root root 6 Jul 17 22:21 sgidd/[[email protected] Desktop]# chmod 2777 sgidd/[[email protected] Desktop]# ls -ld sgidd/drwxrwsrwx. 2 root root 6 Jul 17 22:21 sgidd/

首先为文件夹添加sgiD权限

[[email protected] sgidd]$ touch file1[[email protected] sgidd]$ mkdir file2[[email protected] sgidd]$ lltotal 0-rw-rw-r--. 1 user1 root 0 Jul 17 22:36 file1drwxrwsr-x. 2 user1 root 6 Jul 17 22:36 file2

切换普通用户,在目录中创建一个文件与目录。可以看到创建的两个文件都自动继承了sgiD文件夹的所属组,并且创建的目录也自动添加了sgiD权限。

3、SBIT

SBIT的作用:

当某个目录设置了SBIT权限后,该目录中的文件就只能被其所有者执行删除 *** 作,能有效防止其他人员的恶意破坏。

3.1权限设置方法 3.1.1字母设置法

chmod -R o+t 文件名 添加sgiD权限
chmod -R o-t 文件名 删除sgiD权限

3.1.2数字设置法

chmod 1777 文件名

3.2实例
[[email protected] Desktop]# mkdir sbitd[[email protected] Desktop]# chmod 1777 sbitd/[[email protected] Desktop]# ls -ld sbitd/drwxrwxrwt. 2 root root 6 Jul 17 23:23 sbitd/[[email protected] Desktop]#

创建一个具有SBIT权限的目录

[[email protected] sbitd]$ mkdir test[@L_419_17@ sbitd]$ ls -ld testdrwxrwxr-x. 2 user1 user1 6 Jul 17 23:29 test

切换user1用户,创建目录test

[[email protected] sbitd]$ rm -rf testrm: cannot remove ‘test’: Operation not permitted

切换user2用户,删除目录test,由于SBIT的缘故,提示不允许 *** 作。

总结

以上是内存溢出为你收集整理的SUID、SGID、SBIT归纳总结全部内容,希望文章能够帮你解决SUID、SGID、SBIT归纳总结所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1016774.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存