2023-2024-1 20232829《Linux内核原理与分析》第十二周作业

一、预备知识
在Linux中,能力(capabilities)是一种安全机制,用于定义授予系统上运行的进程的特定特权。它们允许对进程可以执行的操作进行细粒度控制,超越了传统的超级用户(root)和非超级用户之间的二元区分。Linux能力被引入作为二进制的setuid/setgid机制的替代品,该机制允许进程临时获取超级用户权限以执行特权操作。这种二进制方法存在一些限制和安全隐患,因为它将完整的超级用户访问权限授予整个进程,这样做存在风险并容易受到攻击。通过Linux能力,进程可以被授予超级用户权限的子集,允许它们执行特定的特权操作,而无需完全特权。能力以独立单元的形式定义,每个单元表示一种特定的特权或权限。以下是几个例子

1.CAP_NET_ADMIN:允许配置网络接口,包括网络地址转换(NAT)、防火墙设置和路由配置。
2.CAP_SYS_ADMIN:授予各种系统管理特权,例如挂载和卸载文件系统、管理磁盘配额、管理内核模块等。
3.CAP_DAC_OVERRIDE:允许绕过文件操作的权限检查。该能力可用于访问否则受到保护的文件和目录。
4.CAP_SYS_PTRACE:启用跟踪和操纵属于其他用户的进程,允许调试和性能分析工具正常运行。
5.CAP_CHOWN:允许更改文件和目录的所有权。
6.CAP_KILL:允许向其他进程发送信号,包括终止它们。
7.CAP_SETUID:在执行程序时允许设置任意用户ID。
8.CAP_SYS_MODULE:允许加载和卸载内核模块。

二、运行 Set-UID 程序

同样的操作,运行复制的 zsh 可以获得 root 权限,而 bash 不能。
在这里插入图片描述
三、Bash 内在保护机制

使用以下命令确保 /bin/sh 指向zsh

/bin/bash 有某种内在的保护机制可以阻止 Set-UID 机制的滥用。


sudo su
cd /bin
rm sh
ln -s zsh sh

在这里插入图片描述
四、PATH 环境变量的设置

Set-UID 程序被用来执行 /bin/ls 命令;然后程序员可以为 ls 命令使用相对路径,而不是绝对路径。在 /tmp 目录下新建 test.c 文件,可以具有 root 权限,把 /bin/sh 拷贝到 /tmp 目录下面重命名为 ls(先要确保 /bin/ 目录下的 sh 符号链接到 zsh,而不是 bash),将环境变量 PATH 设置为当前目录 /tmp,运行编译的程序 test。就可以获得 root 权限
在这里插入图片描述

实验总结

setuid是类unix系统提供的一个标志位, 其实际意义是set一个process的euid为这个可执行文件或程序的拥有者(比如root)的uid, 也就是说当setuid位被设置之后, 当文件或程序(统称executable)被执行时, 操作系统会赋予文件所有者的权限, 因为其euid是文件所有者的uid。并且Set-UID可以通过命令修改文件的所具有的权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值