热门标签 | 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,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 基因组浏览器中的Wig格式解析
    本文详细介绍了Wiggle(Wig)格式及其在基因组浏览器中的应用,涵盖variableStep和fixedStep两种主要格式的特点、适用场景及具体使用方法。同时,还提供了关于数据值和自定义参数的补充信息。 ... [详细]
  • 如何彻底清除顽固软件如360
    本文详细介绍了如何彻底卸载难以删除的软件,如360安全卫士。这类软件不仅难以卸载,还会在开机时启动多个应用,影响系统性能。我们将提供两种有效的方法来帮助您彻底清理这些顽固软件。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 在维护公司项目时,发现按下手机的某个物理按键后会激活相应的服务,并在屏幕上模拟点击特定坐标点。本文详细介绍了如何使用ADB Shell Input命令来模拟各种输入事件,包括滑动、按键和点击等。 ... [详细]
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社区 版权所有