如何打开Perl文件句柄以通过sudo(或作为另一个用户)写入数据

时间:2011-04-28 19:02:47

标签: perl permissions posix sudo filehandle

我想将数据写入文件,但应该使用特定用户的访问权限打开文件句柄。

因此,以下声明:

open (FH, "> $filename") or die "$@\n";

允许以特定用户身份写入文件。

有没有办法在Perl脚本中执行此操作,而不使用sudo -u $username运行整个脚本?

2 个答案:

答案 0 :(得分:2)

有两种确定的方法。堆叠器,您被邀请编辑此答案以填补每个答案的缺点。

使用sudo运行程序。你在程序中做的第一件事就是打开你需要的文件并保留句柄,然后立即打开drop the root privileges。任何进一步处理必须以低权限进行。 Apache httpd就像这样,它以root打开日志文件,但继续以nobody或类似方式运行。

如果您不喜欢这种方式,请正常运行该程序,当您需要提升时,请创建一个新流程,并让用户配置为sudosu -,{{ 1}} / kdesu或诸如此类的东西。 CPAN客户端的工作方式与此类似,它以普通用户的身份获取,解包,构建和测试模块,但在安装时调用gksu等。

答案 1 :(得分:0)

daxim的建议的替代方法是让脚本拥有特定用户并且脚本权限包括setuid和/或setgid位。