良许Linux教程网 干货合集 跟我学Linux:实例讲解如何使用 SUID 和 SGID

跟我学Linux:实例讲解如何使用 SUID 和 SGID

常规权限可以被SUIDSGID和**粘滞位(Sticky bit)**等特殊权限覆盖。当您对文件使用特殊权限时,只有文件的所有者或组所有者才能操作该文件。

在某些情况下,您只希望所有者可以执行文件,那么SUIDSGID是最好的方法。

如果您想保护您的文件不被任何其他用户删除,那么请获得一个粘性位权限,这可以成为可共享空间中的救星。

目录

  • 什么是 SUID?

    • 如何在文件上实现 SUID
    • 如何从文件中撤销 SUID
  • 什么是SGID?

    • 如何在文件上实现 SGUID
    • 如何从文件中撤销 SGID
  • 总结

什么是 SUID?

简单来说,SUID是一种特殊权限,只有在您拥有文件时才允许您执行这些文件。 否则,您无法执行它。

当您只想限制对自己的权限时,这可能会很方便。最典型的例子是passwd命令,它具有 SUID 权限,因此,如何识别它的问题就出现了。

如果您想详细检查权限统计信息,请运行stat 命令或者您可以使用ls 命令

linuxmi@linuxmi:~/www.linuxmi.com$ stat /usr/bin/passwd 
linuxmi@linuxmi:~/www.linuxmi.com$ ls -l /usr/bin/passwd
输出如下:
 文件:/usr/bin/passwd
大小:68208 块:136 IO 块:4096 普通文件
设备:805h/2053d Inode:28843676 硬链接:1
权限:(4755/-rwsr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2021-12-07 18:51:04.827435882 +0800
最近更改:2021-07-15 06:08:18.000000000 +0800
最近改动:2021-07-24 20:19:58.576147880 +0800
创建时间:-创建时间:- Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-03-01 14:07:48.377112656 +0530
Modify: 2020-02-07 20:24:14.000000000 +0530
Change: 2021-10-30 19:29:05.076144777 +0530
 Birth: 2021-07-28 00:59:20.060264859 +0530

SUID可以由数字4“s”来标识,如果是可执行权限,则用“s”来标识,如果是非可执行权限,则用“S”来标识。

因为该**passwd命令只能由当前登录用户执行,并限制您更改任何其他用户的密码,除非您是root**用户。那么如何在系统上实现它呢?

linuxmi@linuxmi:~/www.linuxmi.com$ passwd mysql
输出如下
passwd:您不能查看或更改 mysql 的密码信息。

 

如何在文件上实现 SUID

要在文件上实现SUID非常简单,您只需使用代表SUID的****第 4 位,或使用符号模式“s”

$ chmod 4XXX [FILE-NAME]
$ chmod u+s [FILE-NAME]

例如,我创建了一个应该执行 的 bash 脚本,并且没有其他用户可以执行,然后传递以下命令:

linuxmi@linuxmi:~/www.linuxmi.com
$ chmod 4744 linuxmi.shlinuxmi@linuxmi:~/www.linuxmi.com
$ ls -l linuxmi.sh
输出如下
-rwsr--r-- 1 linuxmi linuxmi 243 3月  11 21:15 linuxmi.sh

如何从文件中撤销 SUID

您只需传递以下命令即可简单地撤销****SUID权限,该命令将不触及权限值的其余部分并从文件清除SUID 权限

命令语法:

$ chmod u-s [FILE-NAME]
linuxmi@linuxmi:~/www.linuxmi.co$ chmod u-s linuxmi.shlinuxmi@linuxmi:~/www.linuxmi.com$ ls -l linuxmi.sh
-rwxr--r-- 1 linuxmi linuxmi 243 3月  11 21:15 linuxmi.sh

什么是SGID?

SUID适用于单个用户,如果您希望多个或多组用户可以执行文件,则使用类似于SUID 的SGID权限。

当组权限用“s”而不是“ x ”或“S”括起来时,您可以识别SGID 权限,如果它是不可执行的文件或位权限中的第二个。

为了检查,我们将在wall上运行以下命令,该命令用于向所有用户广播消息。

linuxmi@linuxmi:~/www.linuxmi.com$ stat /usr/bin/wall  文件:/usr/bin/wall  大小:35048       块:72         IO 块:4096   普通文件设备:805h/2053d  Inode:28845220    硬链接:1权限:(2755/-rwxr-sr-x)  Uid:(    0/    root)   Gid:(    5/     tty)最近访问:2022-02-12 12:11:30.000000000 +0800最近更改:2022-02-07 21:33:35.000000000 +0800最近改动:2022-02-12 12:11:32.378374082 +0800创建时间:-linuxmi@linuxmi:~/www.linuxmi.com$ ls -l /usr/bin/wall-rwxr-sr-x 1 root tty 35048 2月   7 21:33 /usr/bin/wall

如何在文件上实现 SGUID

要在文件上实现GUID非常简单,您只需使用代表SUID的****第 2 位,或使用符号模式“s”

$ chmod 2XXX [FILE-NAME]$ chmod g+s [FILE-NAME]

我将使用以下命令将“linuxmi.sh”的权限修改为SGID :

linuxmi@linuxmi:~/www.linuxmi.com$ chmod 2755 
linuxmi.shlinuxmi@linuxmi:~/www.linuxmi.com$ ls -l 
linuxmi.sh输出如下
:-rwxr-sr-x 1 linuxmi linuxmi 243 3月  11 21:15 linuxmi.sh

如何从文件中撤销 SGID

您可以参考以下命令语法从相应文件中删除 SGID,并运行**ls``-l**以验证权限统计信息。

$ chmod g-s [FILE-NAME]$ ls -l [FILE-NAME]

我将通过输入以下命令恢复为常规权限:

linuxmi@linuxmi:~/www.linuxmi.com$ chmod g-s 
linuxmi.shlinuxmi@linuxmi:~/www.linuxmi.com$ ls -l 
linuxmi.sh-rwxr-xr-x 1 linuxmi linuxmi 243 3月  11 21:15 linuxmi.sh

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部