是否可以以非 root 权限在早期用户空间中运行程序?

是否可以以非 root 权限在早期用户空间中运行程序?

在安装主根文件系统之前,我正在早期用户空间中的 init 脚本中运行一个程序。

是否可以在没有 root 权限的情况下运行应用程序?

明显的问题是,在启动过程的早期阶段没有“用户”。

答案1

是否可以在没有 root 权限的情况下运行应用程序?

就是这样。假设 Linux 已编译为支持 MULTIUSER ;)

明显的问题是,在启动过程的早期阶段没有“用户”。

嗯,是的,如果您尝试将susudo放在 initramfs 上,您将需要添加大量配置文件(/etc/passwd/etc/groups/etc/shadow)。但这些复杂性并不是 Linux 所固有的。毕竟,UID 只是一个数字,因此如果您的目标是创建一个可以删除 root 权限的玩具程序,那是非常容易的:

#include <stdlib.h>
#include <unistd.h>
int main(int argc, char** argv)
{
  setuid(atoi(argv[1]));
  execvp(argv[2], argv+2);
}

如果将其编译为toysu,则可以这样调用:

toysu 1234 touch /tmp/example

其中1234是要使用的 UID,其余的是要运行的命令。请注意,除非您一开始就是root,否则它不会工作,因此请在该命令前添加前缀以sudo从正常系统进行测试。

相关内容