我希望能够在我的系统上以root身份运行特定的Perl脚本,即使“用户”不是以root身份运行它们。
对于每个脚本,我可以编写一个C包装器,为该包装器设置setuid root;包装器将更改UID为0,然后调用Perl脚本,而Perl脚本本身不会设置setuid位。这避免了在尝试运行setuid root脚本时出现的不幸阻碍。
但我不想为每个脚本编写一个C包装器。我只想要一个C包装器来完成整个系统的工作。我也不希望任何脚本都能使用这个C包装器;C包装器本身应该能够检查Perl脚本的某些特定特征,以确定将UID更改为root是否可接受。
我还没有看到任何其他关于此问题的Stack Overflow问题。
我知道风险,我拥有该系统,并且不希望有任何东西通过阻挡我的方式来任意地照顾我。
对于每个脚本,我可以编写一个C包装器,为该包装器设置setuid root;包装器将更改UID为0,然后调用Perl脚本,而Perl脚本本身不会设置setuid位。这避免了在尝试运行setuid root脚本时出现的不幸阻碍。
但我不想为每个脚本编写一个C包装器。我只想要一个C包装器来完成整个系统的工作。我也不希望任何脚本都能使用这个C包装器;C包装器本身应该能够检查Perl脚本的某些特定特征,以确定将UID更改为root是否可接受。
我还没有看到任何其他关于此问题的Stack Overflow问题。
我知道风险,我拥有该系统,并且不希望有任何东西通过阻挡我的方式来任意地照顾我。
perl
,而是使用用于读取文件的虚拟路径作为您的检查方式(例如,在 Linux 上使用/ proc /####/fd/####
)。 - ikegami