因此,我尝试通过 cgi-bin perl 脚本执行 sudo 命令。我想为 apache 用户授予 sudo 访问权限,以便执行一小部分命令。在我之前可能有人设置了 requiretty 标志。cron 和 cgi-bin 脚本之类的东西没有 tty 会话,因此目前如果我尝试在脚本中执行 sudo,它会告诉我有关该标志的信息。此外,apache 用户无需密码即可执行 sudo。
我想问大家的是,如果我禁用此标志并继续编写脚本,会有什么安全隐患?
答案1
如果您的脚本容易受到任何类型的注入,恶意用户输入的所有命令都将以 root 身份运行。我认为这不会比这更危险 :)
不久前我遇到了同样的问题。我最终将用户作业提交到“队列文件夹”,该文件夹由我每隔几分钟通过 crontab 运行的脚本处理。我的脚本使用正则表达式解析队列中的文件,任何包含无效字符(例如.*<-_>![]{}()\|/;
)的文件都会被丢弃,并通知用户重新提交。