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

Ale*_*lds 5 permissions perl sudo posix filehandle

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

因此,以下声明:

open (FH, "> $filename") or die "$@\n";
Run Code Online (Sandbox Code Playgroud)

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

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

dax*_*xim 2

有两种既定方法。堆垛机,邀请您编辑此答案以填补每个答案的缺点。

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

如果您不喜欢这种方式,请正常运行程序,当您需要提升时,创建一个新进程并让它以用户配置的方式运行sudo,,/su -或诸如此类。CPAN 客户端的工作方式如下,它以普通用户身份获取、解压、构建和测试模块,但在安装时调用等。kdesugksusudo make install