对于linux中文件或目录的权限,应该都知道普通的rwx权限(关于linux中rwx权限的看我的这篇博文http://www.cnblogs.com/javaee6/p/3994750.html)。我们先看看下面两个的权限是什么

非常奇怪,/tmp目录和 passwd文件的权限怎么怪怪的,怎么有s和t权限呢。看了下面的内容你就明白了。

1 SUID

当s出现在文件拥有者的x权限上时,如我们上面看到的/usr/bin/passwd这个文件的权限时-rwsr-xr-x,此时就被称为SET UID简称SUID.SUID对于一个文件有什么限制和功能呢?

  1. SUID权限仅对二进制可执行文件有效
  2. 执行者对于该文件具有x的权限
  3. 本权限仅在执行该文件的过程中有效
  4. 执行者将具有该文件拥有者的权限

例如普通用户用passwd修改自己的命令,实际上最终更改的是/etc/passwd文件. 此文件时用户管理配置文件,只有root权限才能更改。

既然是root用户才拥有此权限,为什么我们可以通过passwd命令来修改密码呢,那这就要归功于passwd设置了suid权限位了。

此时普通用户通过执行passwd命令,临时拥有root权限,间接的修改/etc/passwd,以达到修改自己密码的权限。

2 SGID

当s出现在目录或文件所属群的x权限上时,此时就称为SET GID简称SGID,那SGID对文件和目录分部有哪些功能呢?

2.1 SGID对目录

  1. 使用者若对于此目录具有 r 与 x 的权限时,该使用者能够进入此目录
  2. 使用者在此目录下的群组将会变成该目录的群组
  3. 若使用者在此目录下具有 w 的权限(可以新建文件),则使用者所创建的新文件,该新文件的群组与此目录的群组相同

2.2 SGID对文件

  1. SGID 对二进制可执行文件有效
  2. 程式执行者对于该文件来说,需具备 x 的权限
  3. 执行者在执行的过程中将会获得该文件群组的支援(用于改文件群组的权限)

3 SBIT

当s出现在目录其他用户的x权限上时,此时就称为Sticky Bit简称SBIT,那SBIT有哪些限制和作用呢?

  1. 仅对目录有效,对文件无效
  2. 当使用者在该目录下建立文件或目录时(有权限的情况下),仅自己与 root 才有权力删除新建的目录或文件

我们知道/tmp目录是这样的权限。

现在我们来验证下,先用root账号在tmp文件中创建一个文件test,然后用openstack(其他账号)进入该目录,删除test文件,看看发生什么情况

我们看到这样是不能删除文件的。因为/temp目录有SBIT权限。

4 怎么操作SUID、SBID、SBIT

操作这些标志与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作,

(1)符号类型改变权限

  1. chmod u+s testbin-- 为testbin文件加上setuid标志.
  2. chmod g+s testdir-- 为testdir目录加上setgid标志
  3. chmod o+t testdir-- 为testdir目录加上sticky标志

(2) 数字类型改变档案权限

采用八进制方式. 对一般文件通过三组八进制数字来置标志, 如 666, 777, 644等. 如果设置这些特殊标志, 则在这组数字之外外加一组八进制数字. 如 4666, 2777等. 这一组八进制数字三位的意义如下,

abc

  1. a - setuid位, 如果该位为1, 则表示设置setuid 4---
  2. b - setgid位, 如果该位为1, 则表示设置setgid 2---
  3. c - sticky位, 如果该位为1, 则表示设置sticky 1---

设置完这些标志后, 可以用 ls -l 来查看. 如果有这些标志, 则会在原来的执行标志位置上显示. 如

  1. rwsrw-r-- 表示有setuid标志
  2. rwxrwsrw- 表示有setgid标志
  3. rwxrw-rwt 表示有sticky标志

那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)

linux特殊权限SUID、SGID、SBIT的更多相关文章

  1. Linux 特殊权限 SUID,SGID,SBIT

    setuid 和 setgid 分别是 set uid ID upon execution 和 set group ID upon execution 的缩写.我们一般会再次把它们缩写为 suid 和 ...

  2. CentOS 文件特殊权限SUID,SGID,SBIT

    1.SUID ,是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有所有者的权限(仅对拥有执行权限的二进制程序有效). (1)SUID权限仅对二进制程序有效: (2)本权限仅在执行该 ...

  3. Linux 文件特殊权限 SUID SGID SBIT

    文件除了常规的权限r, w, x 还有一些特殊的权限,s与t权限,具体的用处如下 1 SetUID 当s 这个标志出现在文件所有者的x权限上时, 例如/usr/bin/passwd, [root@or ...

  4. linux 文件三大特殊权限(SUID SGID SBIT)

    SGID(这个应该是文件共享里面最常用权限管理手段) 作用于目录或可执行程序,作用于目录代表在此目录创建的文件或目录,默认的属组继承此目录的属组.例如 我这个testgroup 没有设置SGID .我 ...

  5. Linux之特殊权限(SUID/SGID/SBIT)

    特殊权限的介绍 Set UID 当s这个标志出现在文件所有者的x权限上时,如/usr/bin/passwd这个文件的权限状态:“-rwsr-xr-x.”,此时就被称为Set UID,简称为SUID.那 ...

  6. Linux文件与目录的默认权限与隐藏权限 - umask, chattr, lsattr, SUID, SGID, SBIT, file

    文件默认权限:umask [root@www ~]# umask 0022 <==与一般权限有关的是后面三个数字! [root@www ~]# umask -S u=rwx,g=rx,o=rx ...

  7. centos 特殊权限 各种搜索命令 lsattr ,chattr,suid,sgid,sbit,file,type是否是内置命令,stat文件属性 ,whereis,locate,find,ln 内部命令和外部命令 第五节课

    centos 特殊权限 各种搜索命令 lsattr ,chattr,suid,sgid,sbit,file,type是否是内置命令,stat文件属性 ,whereis,locate,find,ln   ...

  8. 文件的特殊权限(SUID,SGID,SBIT)

    文件的一般权限:r w x  对应 421  文件的特殊权限:SUID SGID SBIT对应 421  文件的隐藏权限:chattr设置隐藏权限,lsattr查看文件的隐藏权限. 文件访问控制列表: ...

  9. SUID, SGID, SBIT

    基本上SUID有这样的限制与功能: SUID权限仅对二进位程序(binaryprogram)有效,不能用在shellscript上面: 运行者对於该程序需要具有x的可运行权限: 本权限仅在运行该程序的 ...

  10. suid sgid sbit chattr lsattr

    suid 一般用于二进制可执行文件,suid代表当用户执行此二进制文件时,暂时具有此文件所有者的权限 chmod 4xxx binfile sgid 一般用于目录,sgid代表当其他用户在此目录下创建 ...

随机推荐

  1. Hibernate —— 映射关联关系(附录)

    一.单向的多对一 1.建表语句 CREATE TABLE customer ( customer_id ) NOT NULL AUTO_INCREMENT PRIMARY KEY , ) CREATE ...

  2. 自己实现简单的AOP(二)引入Attribute 为方法指定增强对象

    话续前文 : 自己实现简单的AOP(一)简介 在前一篇文章中,对AOP的实现方式做了一个简单介绍.接下来,引入Attribute 为方法指定增强对象,由此实现一个简单的AOP. 注意:指定的是增强对象 ...

  3. ORACLE存储过程调用Web Service

    1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...

  4. deployment与Web应用程序部署

    定义用于支持 Web 应用程序部署的配置设置. <deployment retail="true|false" /> retail属性:设置一个值,该值指定是否以发布模 ...

  5. js+html5双人五子棋(源码下载)

    代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...

  6. Redis 详解 (一) StackExchange.Redis Client

    这期我们来看StackExchange.Redis,这是redis 的.net客户端之一.Redis是一个开源的内存数据存储,可以用来做数据库,缓存或者消息代理服务.目前有不少人在使用ServiceS ...

  7. C#集合--Dictionary

    字典(dictionary)是一个集合,其中每个元素都是一个键/值对.字典(Dictionaries)是常用于查找和排序的列表. .NET Framework通过IDictionary接口和IDict ...

  8. 微信JSApi支付~微信支付代理模式的实现(原创)

    返回目录 起因(大叔原创) 对于微信支付来说,你的发起者需要配置对应的域名来获取code(获取用户信息接口),而这意味着,你的多个项目(域名不同)不能同时使用一个公众号,这是一件很操蛋的事,对于我们开 ...

  9. mybatis入门

    1.什么是MyBatis ?      亲爱的度娘是这样说的: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation ...

  10. AdapterPattern(适配器模式)

    import org.omg.PortableServer.AdapterActivator; /** * 分两种情况: * 1.类适配器 * 2.对象适配器 * 作用:让原本接口不兼容的两个类可以在 ...