linux中SUID,SGID与SBIT的奇妙用途详解

 更新时间:2018年09月17日 10:43:38   作者:小菜鸟上校  
这篇文章主要给大家介绍了关于linux中SUID,SGID与SBIT的奇妙用途的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用linux具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧

前言 

linux对文件的权限管理简直是让人叹为观止,又回顾了一下SUID,SGID和SBIT的作用,总结一下。

其实SUID和SGID的作用跟sudo是相似的。当用户A想执行一个原本属于用户B的可执行文件时,若B的文件设置了suid位,则A在执行时是以用户 B的身份来执行。

SUID是Set UID的简称,翻译过来是设置用户ID,感觉很别扭,还是觉得SUID最为简炼。它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。例如,使用如下命令:

ls -l /usr/bin/passwd

我们会得到如下的结果:

-rwsr-xr-x 1 root root 42824 Sep 13  2012 /usr/bin/passwd

可以看到,在文件拥有者的执行位上出现为s而不是x,所以说passwd这个程序是具有SUID权限的。我们直到在修改用户密码的时候,用的就是passwd这个命令,而我们又知道在linux下面,用户密码是存储在/etc/shadow这个文件里面的。首先查看一下/etc/shadow这个文件的权限:

ls -l /etc/shadow

返回的结果如下:

-rw-r----- 1 root shadow 1138 Dec 13 20:00 /etc/shadow

由上面的结果,我们知道只有root可以往shadow文件中写入数据,其他用户连查看的权限都没有。那我们平时是怎么修改密码呢?没错,就是和SUID有关。当我们使用passwd命令时,就获得了passwd的所有者即root的权限,进而可以对shadow文件进行写入操作。

使用SUID肯定满足一下几点:

1.SUID只对二进制文件有效

2.调用者对该文件有执行权

3.在执行过程中,调用者会暂时获得该文件的所有者权限

4.该权限只在程序执行的过程中有效

《鸟哥的linux私房菜》中,有一张图特别能表示这个意思:


SGID即Set GID的缩写,它出现在文件所属组权限的执行位上面,它对普通二进制文件和目录都有效。当它作用于普通文件时,和SUID类似,在执行该文件时,用户将获得该文件所属组的权限。当SGID作用于目录时,意义就非常重大了。当用户对某一目录有写和执行权限时,该用户就可以在该目录下建立文件,如果该目录用SGID修饰,则该用户在这个目录下建立的文件都是属于这个目录所属的组。

SBIT即Sticky Bit,它出现在其他用户权限的执行位上,它只能用来修饰一个目录。当某一个目录拥有SBIT权限时,则任何一个能够在这个目录下建立文件的用户,该用户在这个目录下所建立的文件,只有该用户自己和root可以删除,其他用户均不可以。例如:

ls -ld /tmp

可以得到以下结果:

drwxrwxrwt 12 root root 12288 Dec 17 16:33 /tmp

可以看到最后一位为t,这说明/tmp文件就是这种文件。

那么,如何设置上面所说的三种权限呢?首先来介绍一点预备的知识,用数字来表示权限:

4表示SUID
2表示SGID
1表示SBIT

如果两个或三个权限同时存在时,就将者写权限的值相加就是需要的结果了。利于SUID和SGID同时存在,则为6。下面可以看一下修改的例子:

chmod 4777 test

使test文件具有SUID权限,你可能已经看明白了,就是在普通文件权限前面再加上这些特殊权限值就可以了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Linux ssh服务器配置代码实例

    Linux ssh服务器配置代码实例

    这篇文章主要介绍了Linux ssh服务器配置代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • centos7修改网卡后无法上网问题解决过程

    centos7修改网卡后无法上网问题解决过程

    大家好,本篇文章主要讲的是centos7修改网卡后无法上网问题解决过程,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Linux下文件夹的移动与复制详解

    Linux下文件夹的移动与复制详解

    Linux是一种常见的操作系统,常用于服务器和开发环境。在Linux中,文件夹的移动与复制是常见的操作。本文将介绍如何在Linux中移动和复制文件夹,包括使用命令行和文件管理器两种方法。同时也讲解了如何保持文件夹的权限和元数据。
    2023-04-04
  • 阿里云 ubuntu16.04搭建IPSec服务

    阿里云 ubuntu16.04搭建IPSec服务

    IPSec是一组基于网络层的,应用密码学的安全通信协议族,这篇文章主要介绍了阿里云 ubuntu16.04搭建IPSec服务,需要的朋友可以参考下
    2019-11-11
  • LNMP下添加Discuz x2.5的伪静态规则

    LNMP下添加Discuz x2.5的伪静态规则

    今天一个找我配置过 lnmp 环境的用户要搭建 Discuz 论坛,但是发现不支持伪静态,倡萌没怎么折腾过 Discuz,百度下才知道,原来军哥的 LNMP 环境包自带的 DZ 规则不适用于 Discuz x2.5,记录下对应的伪静态规则
    2016-09-09
  • centos6.5 编译安装lamp以及相关错误的解决方法

    centos6.5 编译安装lamp以及相关错误的解决方法

    这篇文章主要介绍了centos6.5 编译安装lamp以及相关错误的解决方法,需要的朋友可以参考下
    2016-08-08
  • 在Centos下安装python

    在Centos下安装python

    这篇文章主要介绍了在Centos下安装python,CentOS是Linux发行版之一,依照开放源代码规定发布的源代码所编译而成,需要的朋友可以参考下
    2023-04-04
  • linux环境下卸载oracle 11g的过程

    linux环境下卸载oracle 11g的过程

    这篇文章主要介绍了linux环境下卸载oracle 11g的过程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • linux防火墙配置教程之允许转发实验(2)

    linux防火墙配置教程之允许转发实验(2)

    这篇文章主要为大家详细介绍了linux防火墙配置教程之允许转发的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Linux定时自动删除旧垃圾文件的Autotrash工具

    Linux定时自动删除旧垃圾文件的Autotrash工具

    今天小编就为大家分享一篇关于Linux定时自动删除旧垃圾文件的工具,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-09-09

最新评论