当这个脚本的权限是u=rwx,g=rwx,o=r
脚本工作得很好......但是,我需要打开 setuid 位,以便对 smartctl 的调用返回所需的数据而不是错误。
#!/usr/bin/perl
use strict;
use warnings;
use CGI qw(:standard);
my $device = param("device") || "sda";
print header("text/plain");
print "device = $device\n\n";
$ENV{"PATH"} = "/usr/sbin";
open( PS, "smartctl -A /dev/$device |" );
while( <PS> )
{
print $_ . "\n";
}
close( PS );
当我将权限设置为u=rwxs,g=rwxs,o=r
时,脚本在查询未指定时工作device
。但是当device
指定时,之后什么都不会返回print "device = $device\n\n";