通过编程要求在Linux中要求提高权利
-
03-10-2019 - |
题
(这个问题 具有相同的标题,但是问题主体以脚本的角度提出要求,例如 su -c
, ,不要为此欺骗)
我有一个QT GUI应用程序,需要根据用户输入在 /etc中执行一些文件操作。一个选项可能会使用 system()
和 sudo
, ,但即使那需要弄乱 sudoers
在某个时刻文件。我也想不做 system()
加上脚本hacks以修改文件,但要正确的文件操作。
在编程上提升我的应用程序权利的最佳方法是什么?
编辑:作为奖励,如果在Maemo/Meego/其他手持式上也可以使用(Afaik PromistKit在那里也不可用。
解决方案
我将完全编写一个单独的程序。沿着这条线 哲学. 。基本上 - 编写一个简单的程序,可以准确地完成您需要的操作,并通过文件系统上的文件权限控制其行为。主要是
在setuid程序中尽可能少地做.
SETUID程序必须在非常危险的环境中运行:用户完全控制其FDS,ARGS,Environ,CWD,TTY,RILILITS,TIMES,TIMES,信号等。更糟糕的是,受控项目的列表从一个供应商的UNIX到另一个供应商的列表,因此很难编写清理所有内容的便携式代码。
在最近的二十个SendMail安全孔中,仅是因为整个Sendmail系统都是固定的。
只有一个qmail程序是setuid:qmail-quesue。它的唯一目的是在外出队列中添加新的邮件。
和,
尽可能少做.
整个SendMail系统都以根而运行,因此无法通过操作系统的内置保护捕获其错误。相比之下,只有两个Qmail程序,即Qmail-start和Qmail-lspawn作为root运行。
不隶属于 StackOverflow