我试图在网上搜索这个问题,但没有用。
目前我正在构建一个perl脚本,需要为某些数据库中的每一行执行特定的工作。该数据库包含几个争论,包括“用户”字段。 该脚本以root身份运行,并且在db中的每一行迭代中,它将需要切换到提供的用户并以用户身份运行,完成回合并退出回root,然后再次以另一个用户身份运行。
到目前为止,我已尝试过: - 使用POSIX :: setuid($ User)以便在同一个脚本中切换到用户,这意味着:
while (my $line = <$DB>){
.. some code ..
POSIX::setuid($User); #switch to user
... do stuff
POSIX::setuid(0); #return to root
但是这个解决方案不能很好地工作,一旦它通过循环的所有迭代被卡在这个用户中,并且无法返回到root,这显然是合乎逻辑的,因为它没有正确的权限。
由于这不起作用,我想我也许应该把工作分成两个脚本。一个脚本将以root身份运行,而另一个脚本将在第一个脚本中由root调用,然后使用POSIX :: setuid。 我想,也许是因为它是一个subproc \ shell,只要在第二个脚本上完成工作,它就会自动返回到root,但它不能正常工作......我有点想法,任何事情你们认为会有所帮助吗?