zoukankan      html  css  js  c++  java
  • Linux特殊权限管理SUID|SGID|STICKY

    1、为什么要使用高级权限?

      通俗来说,我不给普通用户root账号和密码,但是我要普通用户可以执行root用户的文件或者脚本。比如:我管理着几个大型的数据库系 统,而对它们进行备份需要有系统管理权限。我写了几个脚本,并设置了它们的 g u i d,这样 我指定的一些用户只要执行这些脚本就能够完成相应的工作,而无须以数据库管理员的身份 登录,以免不小心破坏了数据库服务器。通过执行这些脚本,他们可以完成数据库备份及其 他管理任务,但是在这些脚本运行结束之后,他们就又回复到他们作为普通用户的权限。 

    suid 4  u+s
    sgid 2  g+s
    sbit  1  o+t

    2、SUID(s)

      即Set User ID,当s这个标志出现在文件所有者的x权限上时,“-rwsr--r-- 1 root root 32 3月   5 14:55 t.sh”,此时就称之为SUID。

    注意: 
    - SUID权限仅对二进制程序(binary program)有效 
    - 执行者对于该程序需要具有x的可执行权限,没有x权限,一切都将毫无意义 
    - 本权限仅在执行该程序的过程中有效(run-time) 
    - 执行者将具有该程序拥有者(owner)的权限

    这个SUID只能运行在二进制的程序上(系统中的一些命令),不能用在脚本上(script),因为脚本还是把很多的程序集合到一起来执行,而不是脚本自身在执行。同样,这个SUID也不能放到目录上,放上也是无效的。

    案例:

    (1)root用户下新建一个profile文件,将其权限设置为640

    (2)登陆alex用户,验证是否有权限打开profile文件

     (3)现在的需求是,不把root账号给alex用户,同样让其可以打开该文件(要有读的权限)。使用SUID实现,chmod 4744 profile,但是前提是要给读的权限,否则无效。此时可以打开profile文件,如果想要让alex具有写等权限,只需要添加w即可。

    3、SGID(s)

      即Set Group ID,把这个s放到文件的所属用户组x位置上的话,就是SGID。也就是让属组内的用户临时获取root权限。

    注意: 
    1、SGID对二进制程序有用; 
    2、程序执行者对于该程序来说,需具备x的权限; 
    3、SGID主要用在目录上;
    

    SGID和SUID一样,只是SGID是获得该程序所属用户组的权限。如果用户在此目录下具有w权限的话,若使用者在此目录下建立新文件,则新文件的群组与此目录的群组相同。

    4、SBIT(t)

      SBIT(Sticky Bit)目前只针对目录有效,用户只能删除自己的文件。当用户在该目录下建立文件或目录时,仅有自己与 root才有权力删除。

      

    注意:

    某些情况下会出现大写的S和T 
    如果你本来是小的s和t,但是此时去掉了文件或者目录的执行权限,那么 
    这时候的小s和小t就变成了大S和大T了,因为如果没有了x权限,根据我们上面讲的内容,这个特 殊的权限就相当于一个空的权限,没有意义。
    也就是说,如果你看到特殊权限位置上变成了大写的了,那么,就说明,这里的权限已经不起作用了。

      

      

  • 相关阅读:
    Java Scanner
    Java 继承
    什么叫异常?什么叫错误? 如何捕获异常? 如何抛出异常? 说说finally和final的区别! 什么是JDK?什么是JRE?说说它们之间的区别? 说说字符常量和字符串常量的区别
    数据分析三剑客之Pandas时间序列
    Css样式布局之Flex弹性盒子布局
    memcached的安装和使用
    Flask 第十八话之Restful API
    Flask 第十七话之信号
    Flask 第十六话之钩子函数
    Flask 第十五话之请求上下文及全局全局存储g对象
  • 原文地址:https://www.cnblogs.com/python-wen/p/12420841.html
Copyright © 2011-2022 走看看