添加非 root 用户通常不可用的“有用”系统调用

Posted

技术标签:

【中文标题】添加非 root 用户通常不可用的“有用”系统调用【英文标题】:Adding a "useful" syscall not normally available to a non-root user 【发布时间】:2011-05-01 15:06:40 【问题描述】:

我已经实现了一个功能有限的简单 Hello World 系统调用——它只是从用户模式转换到内核模式,打印与内核消息一起记录的消息,然后转换回用户模式。

获得额外积分的下一步是添加一个有用的(新)系统调用,该系统调用通常对非 root 用户可用。

系统调用可以像我们喜欢的那样简单,但我正在努力想出任何想法......有人可以指出我正确的方向或可以轻松实现的东西吗? (我们得到的提示是使用您的新系统调用进行调试!)

【问题讨论】:

【参考方案1】:

内核结构中有大量关于进程的信息:页面位置、内存统计信息、I/O 统计信息和文件句柄信息、CPU 调度信息等。虽然其中大部分可能通过诸如此类的方式提供给用户proc 文件系统,以编程方式获取该信息可能需要解析 proc 输出等。提供一种获取有关进程的此类信息的方法(可能暂时不太关注可能出现的安全问题)可能有用。

【讨论】:

【参考方案2】:

也许是一个新的调用,专门从受信任的 NTP 服务器更新系统日期和时间? 我相信普通用户自己无法做到这一点。

以某种方式更改网络设置?释放/更新 DHCP 租约,或实施简单的网络位置,这些位置是存储在根可写配置文件中的预定义批次设置。

【讨论】:

-1 这些东西都不是特别适合内核空间。【参考方案3】:

用户通常不能将自己拥有的文件的所有权赠与其他用户(当然,这样做是有充分理由的!)。你可以实现一个系统调用来做到这一点。不要忘记清除 setuid 位!

【讨论】:

【参考方案4】:

最简单的方法 - 调试 - 将创建一个系统调用,让您可以直接访问内核的“printk”调用!

【讨论】:

【参考方案5】:

将当前进程的 uid 设置为 0 怎么样,本质上是一个“后门”系统调用,它为调用它的任何用户提供 root 访问权限?

【讨论】:

以上是关于添加非 root 用户通常不可用的“有用”系统调用的主要内容,如果未能解决你的问题,请参考以下文章

linux系统服务启动脚本在哪个目录下

Linux系统的安全设置

linux中用脚本创建非root用户,要脚本中配制非root用户的密码,如何用openssl对密码加密

perl 下使用非root用户安装模块

如何在Yocto中添加Sudouser

Docker使用非root用户