• 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权限,根据我们上面讲的内容,这个特 殊的权限就相当于一个空的权限,没有意义。
    也就是说,如果你看到特殊权限位置上变成了大写的了,那么,就说明,这里的权限已经不起作用了。

      

      

  • 相关阅读:
    训练赛(28)—— 计蒜客 45724 Jumping Frog
    训练赛(28)—— 计蒜客 45725 Fujiyama Thursday
    centos上libreoffice+unoconv安装步骤,实现word转pdf
    PhantomJS linux系统下安装步骤及使用方法(网页截屏功能)
    knockout应用开发指南(完整版)
    git 创建版本库
    保留json字符串中文的函数,代替json_encode
    微信公众平台开发接口PHP SDK完整版(转载)
    find_in_set()
    NuSOAP与PHPRPC比较(转)
  • 原文地址:https://www.cnblogs.com/python-wen/p/12420841.html
Copyright © 2020-2023  润新知