【发布时间】:2023-03-06 18:00:01
【问题描述】:
假设我有一个 perl 程序,例如:
my $c = "MyDataToCProg";
open my $h, '-|', 'myCProg', "$c";
my @result = <$h>;
close $h;
print "Result: " . $result[0] . "\n";
现在,myCProg 是一个用 gcc 编译的程序。 C 程序的输出将是一个 printf 语句,它最终会出现在 perl 程序的 $result[0] 变量中。
有没有比使用 printf 打印更好的方法从 C 程序中提取输出?例如,任何人都可以从命令行运行“myCProg”并查看输出。我希望仅在 perl 程序中看到输出,如果有人在命令行运行程序,则不可见。
有人知道怎么做吗?
抱歉,我手边没有 C 程序,但是任何有 printf 语句(甚至是简单的 Hello World)并接受参数(也许打印“Hello [yourname]”的东西都适用于这个例子。
【问题讨论】:
-
或更改
myCProg的权限,以便只有有权执行它的人才能执行。 -
@thrig,您必须将 Perl 脚本设置为 set-uid 脚本才能使用。
-
我完全看不出 perl 脚本上的 setuid 与控制谁有权执行
myCProg有什么关系,例如chmod go-rwx myCProg将执行(并因此查看输出)仅限于所有者。 -
@thrig 1. 创建拥有
myPerlProg和myCProg的用户。 2.chmod 700 myCProg。 3. 设置myPerlProgsetuid,让其他用户可以执行myPerlProg,也可以执行myCProg(但不能直接执行myCProg)。