热门标签 | 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多用于多人协同的工作目录。




推荐阅读
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • OCI连接MySQL_PLSQL Developer连接远程数据库OCI客户端安装方法
    本文介绍了使用OCI客户端连接MySQL和PLSQL Developer连接远程数据库的安装方法,避免了在本地安装Oracle数据库或类似的开发套件的麻烦,同时解决了PLSQL Dev连接远程Oracle时的配置问题。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • Jboss的EJB部署描述符standardjaws.xml配置步骤详解
    本文详细介绍了Jboss的EJB部署描述符standardjaws.xml的配置步骤,包括映射CMP实体EJB、数据源连接池的获取以及数据库配置等内容。 ... [详细]
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社区 版权所有