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




推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 深入理解Shell脚本编程
    本文详细介绍了Shell脚本编程的基础概念、语法结构及其在操作系统中的应用。通过具体的示例代码,帮助读者掌握如何编写和执行Shell脚本。 ... [详细]
  • HBase运维工具全解析
    本文深入探讨了HBase常用的运维工具,详细介绍了每种工具的功能、使用场景及操作示例。对于HBase的开发人员和运维工程师来说,这些工具是日常管理和故障排查的重要手段。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • MongoDB集群配置:副本集与分片详解
    本文详细介绍了如何在MongoDB中配置副本集(Replica Sets)和分片(Sharding),并提供了具体的步骤和命令,帮助读者理解并实现高可用性和水平扩展的MongoDB集群。 ... [详细]
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
  • 如何彻底清除顽固软件如360
    本文详细介绍了如何彻底卸载难以删除的软件,如360安全卫士。这类软件不仅难以卸载,还会在开机时启动多个应用,影响系统性能。我们将提供两种有效的方法来帮助您彻底清理这些顽固软件。 ... [详细]
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社区 版权所有