对于特殊权限
SUID 只针对二进制可执行文件,使用拥有SUID权限的文件发现其中记录的程序时以文件拥有着的身份去执行
SGID针对二进制可执行文件 该命令发起的程序是以该命令所有组的身份去执行 针对目录:目录新建文件的所属组与该目录的所有组保持一致
STICKYID 对于文件:表示文件即使没有被程序调用也会被加载到交换空间中 针对目录:当目录上有STICKYID的权限时 所有用户在该目录下均可创建文件 但只有文件拥有着和root用户可以删除该目录下的文件
我们先在mnt下新建一个pub目录 给于777权限 我们对这个目录的权限进行监控并且我们对里面的内容进行显示为了方便大家对这里面的变化进行观察 对这个命令进行实时监控 回车进行执行
因为pub目录的权限时777权限所以所有人都可以在里面建立文件 我们切换到westos用户建立文件 可以看到谁建立的文件就属于谁
在切换到lee用户 创建文件
我们是否可以删除自己的文件
能不能删除别人创建的文件 肯定时可以的 因为pub目录对于所有人都可以写
但是在生活中我们这样做是不合理的 所以我们要限制文件只能被所有人删除 我们需要用超级用户去更改这个目录的权限
然后我们在切换到westos用户 去操作一遍
切换用户lee 创建文件
我可以创建自己的文件file1 但是无法删除westos用户建立的文件
rm: cannot remove ‘file’: Operation not permitted 操作不被允许
这就是stickyid的作用 对于目录而言目录当中的文件只能被自己的所有人删除掉
SUID和SGID的理解
采用ps ax用户查看进程信息 -o去指定进程的用户是谁进程属于哪个组以及进程的名字是什么 回车进行执行
我们对整组的命令进行监控
这是一个含有标准库的可执行文件
我们可以看到这个文件属于root用户和root组
我们切换到普通用户 去执行bin下的cat命令 这个进程属于谁调用的cat程序就是谁开启的这个cat程序
默认情况下在系统当中,产生的进程这个进程的所有人和文件的所有人是没有关系的,是谁去执行了这个动作产生的进程就应该是谁的
如何去设定并令在执行的时候必须用固定身份去执行这就是我们所说的SUID
切换到kiosk用户去执行cat 发现虽然用户切换了 在使用二进制产生的进程属于这个二进制可执行文件的所有人rootn/cat
由此可见 任何人执行这个文件时都是以/bin/cat这个文件的所有人身份去执行的而和是谁发起的没有关系
对于文件的所属组依然没有改变 我们想用文件的所有组去执行 ,就要用到SGID
我们切换到其他用户再次执行 可以看到虽然我使用kiosk用户身份去发起cat这个动作但这个进程的所有组却属于root而root是这个/bin/cat二进制可执行文件的所有组
我们可以使用这个功能让身份提升或者下降 对于目前来说使用了SUID和SGID任何人执行cat时都是以超级用户的身份去执行
/etc/shadow这个密码文件对于普通用户本来是不可以看的 但是现在是可以的
SGID对于目录的作用 首先我们对mnt进行监控
我们先创建一个目录westos 可以看到这个目录属于root和root用户组
我们对用户和所属组进行修改 给与最大权限
切换到kiosk用户 创建文件 依然是谁建立的就是谁的
现在要求再westos目录下创建的文件都要归属到westos这个组里面
依然使用kiosk用户在westos下创建文件 SGID对于目录:文件的所属组就会成为目录的所属组而并非创建的用户
如何设定SUID和SGID 我们先删除文件中内容
我们先把文件的改成755 设定SUID和SGID
同样也可以用数字来表示权限 原来的权限是755 SUID对应的值是4所以是4755 效果时一样的
SGID SGID对应的值是2
但是2755将之前设置的SUID取消了 要想既有SUID和SGID
设置t权限
或者采用数字的方式