热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SetUID、SetGID与StickyBit(SBIT)

如何正确的理解SetUID、SetGID与StickyBit

Set UID和Set GID对文件有影响(这里的"文件"指的是二进制程序,不包括SHELL脚本);Set GID和Sticky Bit对目录有影响。


SET UID举例:


[oracle@rhce u01]$ ls -l usr/bin/passwd
-rwsr-xr-x. 1 root root 26980 Jan 29 2010 usr/bin/passwd


1)用户对于/usr/bin/passwd程序具有x执行权限,表明oracle能执行passwd;

2)passwd的拥有者是root;

3)oracle执行passwd的过程中,会"暂时"获得root的权限;

4)/etc/shadow就可以被oracle用户所执行的passwd所修改。


SET GID举例:


对二进制程序文件:

[root@rhce mlocate]# ls -l usr/bin/locate var/lib/mlocate/mlocate.db

-rwx--s--x. 1 root slocate 35644 Mar 30 2010 usr/bin/locate
-rw-r-----. 1 root slocate 5020009 Oct 18 18:22 var/lib/mlocate/mlocate.db


1)用户对于/usr/bin/locate程序具有x执行权限,表明oracle能执行locate;

2)locate的组拥有者是slocate;

3)oracle执行locate的过程中,会"暂时"获得slocate组的权限;

4)/var/lib/mlocate/mlocate.db就可以被oracle用户所执行的locate所修改。


对目录:

[root@rhce ]# ls -ld u01

drwxrwxrwx. 2 grid asmoper 4096 Oct 21 18:18 u01
[root@rhce ]# chmod g+s u01
[root@rhce ]# ls -ld u01
drwxrwsrwx. 2 grid asmoper 4096 Oct 21 18:18 u01
[root@rhce ]# su - oracle
[oracle@rhce ~]$ touch u01/test1
[oracle@rhce ~]$ ls -l u01/test1
-rw-r--r--. 1 oracle asmoper 0 Oct 21 18:19 u01/test1
[oracle@rhce ~]$ exit
logout
[root@rhce ]# chmod g-s u01
[root@rhce ]# ls -ld u01
drwxrwxrwx. 2 grid asmoper 4096 Oct 21 18:19 u01
[root@rhce ]# su - oracle
[oracle@rhce ~]$ touch u01/test2
[oracle@rhce ~]$ ls -l u01
total 0
-rw-r--r--. 1 oracle asmoper 0 Oct 21 18:19 test1
-rw-r--r--. 1 oracle oinstall 0 Oct 21 18:19 test2


在目录中最新创建的文件将其组所有者设置为与目录的组所有者一致。


Sticky Bit(SBIT)举例:

当用户A对于目录具有组或其他人的身份,同时拥有该目录w的权限时,如果目录具有SBIT设置,则用户A在该目录下只有删除/更名/移动自己创建的文件或目录,无法对其他用户的文件和目录进行操作。


Sample 1(用户oracle和grid对于u01目录具有其他人的身份,同时拥有该目录w的权限):

[root@rhce u01]# ls -ld
drwxrwxrwt. 2 root root 4096 Oct 21 23:25 .
[root@rhce u01]# touch test1 test2
[root@rhce u01]# chown grid:oinstall test1
[root@rhce u01]# chown oracle:oinstall test2
[root@rhce u01]# ls -l
total 0
-rw-r--r--. 1 grid oinstall 0 Oct 21 23:25 test1
-rw-r--r--. 1 oracle oinstall 0 Oct 21 23:25 test2
[root@rhce u01]# su - oracle
[oracle@rhce ~]$ rm u01/test1
rm: remove write-protected regular empty file `/u01/test1'? y
rm: cannot remove `/u01/test1': Operation not permitted
[oracle@rhce ~]$ exit
logout
[root@rhce u01]# su - grid
[grid@rhce ~]$ rm /u01/test2
rm: remove write-protected regular empty file `/u01/test2'? y
rm: cannot remove `/u01/test2': Operation not permitted


Sample 2(用户oracle对于u01目录具有组的身份,同时拥有该目录w的权限):

[root@rhce /]# ls -ld /u01
dr-xrwxrwt. 2 grid oinstall 4096 Oct 21 23:38 /u01
[root@rhce /]# su - test
[test@rhce ~]$ touch /u01/test1
[test@rhce ~]$ exit
logout
[root@rhce /]# su - oracle
[oracle@rhce ~]$ touch /u01/test2
[oracle@rhce ~]$ ls -l /u01
total 0
-rw-rw-r--. 1 test test 0 Oct 21 23:39 test1
-rw-r--r--. 1 oracle oinstall 0 Oct 21 23:40 test2
[oracle@rhce ~]$ rm /u01/test1
rm: remove write-protected regular empty file `/u01/test1'? y

rm: cannot remove `/u01/test1': Operation not permitted


注:以上两个sample中,如果去除SBIT设置,是可以删除别的用户的文件的!所以SBIT多用于多人协同的工作目录。




推荐阅读
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文讲述了如何通过代码在Android中更改Recycler视图项的背景颜色。通过在onBindViewHolder方法中设置条件判断,可以实现根据条件改变背景颜色的效果。同时,还介绍了如何修改底部边框颜色以及提供了RecyclerView Fragment layout.xml和项目布局文件的示例代码。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
author-avatar
276443071_7309cb
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有