Io Perl6:以其他用户身份运行命令

Io Perl6:以其他用户身份运行命令,io,root,raku,Io,Root,Raku,Perl6如何以不同的用户身份运行命令 上下文:作为普通用户安装,有些命令需要作为root用户运行 临时解决方案:以下函数允许以不同的用户身份运行shell命令: unit module Repo::Utils::RunAsUser; sub RunAsUser( Str $user, Str $command, --> Proc ) is export { return shell "su -c \'$command\' $user"; } 问题: 从Perl6脚本以root用

Perl6如何以不同的用户身份运行命令

上下文:作为普通用户安装,有些命令需要作为root用户运行

临时解决方案:以下函数允许以不同的用户身份运行shell命令:

unit module Repo::Utils::RunAsUser; 
sub RunAsUser( Str $user, Str $command, --> Proc ) is export {
  return shell "su -c \'$command\' $user";
}
问题:

  • 从Perl6脚本以root用户身份运行命令是否有其他语法
  • 用户能否以root用户身份运行某些IO::Path方法和子例程(如unlink或mkdir)

谢谢

可能不是100%Perl6解决方案,但您可以使用Perl6中编写的Sparrow6在用户下运行命令

示例:


我想没有。要么使用shell,要么使用对Posix函数的本机调用,它们的作用基本相同。不过,我不知道这样的东西是否已经发表过。我刚刚发现:这可能对这类事情很有用。让我们假设有这样一个函数,
以root运行
——现在任何人都可以在安装该模块的任何人的系统上发布一个模块,以root身份执行任何操作。这忽略了一个事实,
以root用户身份运行
也需要一种在Windows上工作的方法。@ugexe:你说得对!同时,假设模块A需要以root用户身份运行,模块A使用模块B、C和D。要运行模块A,必须以root用户身份安装zef,所有其他模块都将以root用户身份运行。使用以根用户身份运行函数(如示例)可确保只有某些代码以根用户身份运行。@ugexe:AppleScript有一个方便的带有管理员权限的子句,可以标记到shell命令上:
do shell script“rm important file.foo”具有管理员权限,类似于,说
shell“rm-important file.foo”:提升的
(对于nix*root和Windows管理员来说是通用的)。在AS中,每次运行脚本都会触发管理员PW提示,错误的密码会导致脚本失败。在P6中复制这一模型(无论是对于内置的还是对于模块的)可能不是一个糟糕的模型,而且它至少需要用户对模块进行干预。理想情况下,不会出现脱壳期。特别是用于删除/修改目录。而且,由于大多数其他使用外壳的东西也有一个不可用的替代方案(比如prove vs TAP.pm6),我不知道如何以一种健壮的方式工作。