实例讲解 Linux 中如何使用 SUID 和 SGID
在某些情况下,您只希望所有者或组可以执行文件,那么SUID和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.sh
linuxmi@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.com$ chmod u-s linuxmi.sh
linuxmi@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.sh
linuxmi@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.sh
linuxmi@linuxmi:~/www.linuxmi.com$ ls -l linuxmi.sh
-rwxr-xr-x 1 linuxmi linuxmi 243 3月 11 21:15 linuxmi.sh
总结
关于Linux 中的 SUID 和 SGID 就这些了。
The post 实例讲解 Linux 中如何使用 SUID 和 SGID first appeared on Linux迷.
共有 0 条评论