在perl脚本中,我运行以下代码
my @lines = `ps -ef`; 目前,当我将数组输出到我的浏览器中时,我只能看到以下进程:
UID PID PPID C STIME TTY TIME CMD
root 1928 1 0 Feb18 ? 00:00:00 /usr/sbin/abrtd
apache 9198 9121 1 17:23 ? 00:00:00 /usr/bin/perl /var/www/cgi-bin/tbchecker.pl
apache 9199 9198 0 17:23 ? 00:00:00 ps -ef 我认为问题在于apache用户需要有访问权限才能看到服务器上运行的所有进程,但不确定。
有人能帮我指出正确的方向吗?
(操作系统为Linux centos 6.4)
发布于 2014-05-08 15:44:13
您认为apache用户“需要访问权限才能看到服务器上运行的所有进程”的假设是错误的(在配置良好的Apache2服务器上)。
建议在具有受限权限的特殊帐户下运行apache httpd服务器进程。
如果你真的想改变这一点,并且你知道它的含义,你可以配置Apche2在根账户下运行。http://httpd.apache.org/docs/2.4/上的Apache文档是您的朋友。
发布于 2014-05-20 22:27:39
仍然可以在设置了SUID位的情况下以root用户身份运行perl脚本。注意,我还没有测试它是否会提供所需的输出;普通的shell脚本不能在SUID模式下运行(至少在Linux下),并且shell在执行命令之前会删除额外的特权。
https://stackoverflow.com/questions/23535441
复制相似问题