【问题标题】:How to write a file as root in a program that is not run as root?如何在不以 root 身份运行的程序中以 root 身份编写文件?
【发布时间】:2017-09-14 11:46:01
【问题描述】:

我有一个不应该以 root 身份运行的程序,因为它会根据用户的名字来做一些事情。但是,我可能需要编写一个(并且应该)只能以 root 身份写入的文件。

我可以做但不希望做的是将文件写入某个临时文件,然后(system "sudo mv /tmp/myfile /destination/myfile")。这将使 sudo 要求输入密码,以 root 身份移动文件,然后程序将继续以普通用户身份运行。如果用户不能sudo 他不应该使用该程序,所以这并不重要。

我希望能够在没有临时文件的情况下从程序中写入文件,有什么办法吗?

【问题讨论】:

    标签: file io racket root sudo


    【解决方案1】:

    仔细阅读setuid 可执行文件(这就是sudosulogin 的工作方式)。阅读credentials(7)capabilities(7)execve(2)setreuid(2)。另请阅读Advanced Linux Programming

    但要小心。您可以引入安全漏洞或vulnerabilities

    顺便说一句,sudo(或super)可以配置为避免询问任何密码(但这样做可能不明智)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-11
      • 2017-07-29
      • 2013-12-19
      • 2022-09-29
      • 2019-05-04
      • 1970-01-01
      相关资源
      最近更新 更多