我想将数据写入文件,但应该使用特定用户的访问权限打开文件句柄.
因此,以下声明:
open (FH,"> $filename") or die "$@\n";
有没有办法在Perl脚本中执行此操作,而不使用sudo -u $username运行整个脚本?
解决方法
有两种既定的方法.堆叠器,您被邀请编辑此答案以填补每个答案的缺点.
用sudo运行程序.您在程序中执行的第一件事是打开所需的文件并保留句柄,然后立即执行drop the root privileges.必须以低权限进行任何进一步处理. Apache httpd工作就像这样,它以root身份打开日志文件,但继续以无人或类似方式运行.
如果您不喜欢这种方式,请正常运行程序,当您需要提升时,创建一个新进程并使用用户配置的sudo,su –,kdesu / gksu或诸如此类的方式运行它. CPAN客户端就像这样工作,它以普通用户的身份获取,解包,构建和测试模块,但是在安装时调用sudo make install等.