在脚本文件中包含您的 root 密码简直是愚蠢的。不要这样做,有更好的选择。本页介绍了如何使用setuid位设置来制作 shell 脚本,以及如何规避大多数现代 Linux 发行版对 shell 脚本的 setuid 的限制。
我将在这里总结突出部分以符合 stackoverflow 指南。首先使用以下内容创建一个.c
文件(假设它被称为runscript.c
):
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
setuid( 0 );
system( "/path/to/script.sh" );
return 0;
}
安装 gcc(apt-get install gcc
在基于 debian 的发行版上),然后输入
gcc -o runscript runscript.c
现在,以 root 身份输入
chown root:root runscript script.sh
chmod 4755 runscript script.sh
现在任何用户都应该能够运行runscript
,并且它会script.sh
像用户是 root 一样执行。
只要这两个文件都由 root 拥有并且除 root 之外的任何其他人都不能写入,这是相当安全的,并且比在脚本文件中以纯文本形式嵌入 root 密码更安全。
script.py
由于某种原因,我没有成功地使这个文件工作,所以如果你真的想运行一个 python 脚本,让script.sh
文件间接运行它。如果您这样做,请记住也为 python 脚本设置所有者和权限,使用chown
和chmod
如上所述。