这个问题只涉及 C 语言,只涉及 Linux 操作系统。
问题的本质。我的主程序以 sudo 开始,要求输入密码,然后执行。此外,在该程序本身中,使用 sudo 调用各种外部程序(例如,“sudo rm ...”)。由于 sudo 会话是有时间限制的,因此程序的前几个 sudo 调用工作正常。但是,当会话结束时(并且我的程序运行了几个小时),使用 sudo 执行外部程序的命令将停止执行。笔记。从我的内部启动外部程序是用 popen(...) 完成的。
为解决该问题采取了哪些措施: a) 设置了较大的 timestamp_timeout;b) 输入 sudo -s 后启动主程序
问题尚未解决。显然,从我的主程序中运行外部程序不被视为主程序 sudo 会话的扩展。我不想完全禁用当前用户的 sudo 密码提示。我需要一个允许我从主程序内部运行外部程序的解决方案,无论 sudo 会话的持续时间如何。或者如何在传递 sudo 密码的同时运行外部程序。
在此先感谢您的建设性答复。
如果程序以 root 权限启动,那么它们将一直保留到它结束,您不需要在其中使用 sudo
你显然有一些错误的工作流程。但是对于这种错误的工作流程,有一个解决方案。
sudo -S program <<<"YourPassWord"
或者echo "YourPassWord"|sudo -S program
我们代表组成员的用户执行 sudo
sudo
而不输入密码也许不是
sudo
popen通过,或( https://jlk.fjfi.cvut.cz/arch/manpages/man/seteuid.2.en )重新排列uidsetuid
setreuid
setresuid
setfsuid
另外,为了不在sudo下运行程序,通过Capabilities对二进制文件赋予权限
或者