如何允许使用pkexec以另一个用户身份运行通知发送?

AlmuHS

作为该问题的继续(如何使用polkit 0.106发送通知?),我发现我必须以notify-send要发送通知的用户身份执行

但是,使用我当前的配置,我无法执行此操作,因为polkit以polkitd用户身份执行脚本,并且su $user没有已知的用户密码也无法执行

因此,我需要创建一个新的polkit动作,以允许notify-send其他用户从polkitd中执行

我的polkit规则是这样的:

polkit.addRule(function(action, subject) {
     if (action.id == "org.freedesktop.consolekit.system.stop" ||
        action.id == "org.freedesktop.login1.power-off" ||
        action.id == "org.freedesktop.login1.power-off-multiple-sessions" || 
        action.id == "org.xfce.session.xfsm-shutdown-helper")  
     {

        try{    
            polkit.spawn(["/usr/bin/pendrive-reminder/check_pendrive.sh", subject.user]);        
            return polkit.Result.YES;

        }catch(error){
            polkit.spawn(["/usr/bin/pendrive-reminder/send_notify.sh", subject.user]);
           return polkit.Result.NO;
        }
    }
});

此polkit规则必须锁定“关闭”菜单中的“关闭”选项,并notify-send使用send_notify.sh脚本显示带有的通知,该脚本将执行以下操作:

#!/bin/bash

export DISPLAY=":0"

user=$1
pkexec --user $user notify-send  "Pendrive Reminder" "Shutdown lock enabled. Disconnect pendrive to enable shutdown" -u critical

exit 0

我试图添加此polkit策略文件:

<policyconfig>
    <action id="org.freedesktop.notify-send">
    <description>Launch notify-send command</description>
    <defaults>
        <allow_any>yes</allow_any>
        <allow_inactive>yes</allow_inactive>
        <allow_active>yes</allow_active>
    </defaults>
   <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/notify-send</annotate>
   <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
   </action>
</policyconfig>

我把这个文件放在 /usr/share/polkit-1/actions/org.freedesktop.policykit.notify-send.policy

但是,在放入策略文件/usr/share/polkit-1/rules.d/并按“关闭”按钮后,关闭菜单显示了很长时间,并且没有出现通知。关机选项已正确锁定

我如何获得polkit可以从我的脚本中调用通知发送?

AlmuHS

经过几次测试后,我得到了以下结果:

  • polkitd是nologin用户
  • 如果执行此命令,以polkitd用户执行脚本,将显示错误:

    sudo su polkitd -s /bin/bash -c aux_scripts/send_notify.sh almu

    Error executing command as another user: Not authorized

    This incident has been reported.

因此,我认为polkitd用户是一个受限帐户,它无法像其他用户一样执行命令

结论是,我确定如果不修改系统内部就无法执行此操作。我不允许在我的应用程序中使用它,因此无法以其他用户的身份从polkit启动命令

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何只允许一个用户使用另一个帐户?

来自分类Dev

如何只允许一个用户使用另一个帐户?

来自分类Dev

使用Parse从一个用户向另一个用户发送推送通知?

来自分类Dev

如何以另一个用户身份运行交互式命令

来自分类Dev

使用登录的会话以另一个用户身份运行Systemd Service

来自分类Dev

如何使用ASP.NET Identity 2.0允许用户模拟另一个用户?

来自分类Dev

如何使用 FCM 和 Flutter(一个到另一个设备)发送推送通知?

来自分类Dev

以root用户身份运行的脚本可以以普通用户身份运行另一个脚本吗?

来自分类Dev

在使用“ mine” X Server的微型电话和扬声器时,以另一个用户身份运行Viber

来自分类Dev

以sudo身份作为另一个用户运行cd时出现问题

来自分类Dev

以另一个(非root)用户身份运行GUI应用程序

来自分类Dev

以另一个没有密码的用户身份运行Shell脚本

来自分类Dev

以另一个用户(管理员)身份运行任务管理器

来自分类Dev

以另一个无密码用户身份运行命令-sudo失败?

来自分类Dev

永久允许xhost访问另一个用户

来自分类Dev

如何使用NodeJS以超级用户身份连接到另一个MongoDB数据库?

来自分类Dev

Ansible:如何使用“ sudo su -c <COMMAND> <USER>”以另一个用户身份执行命令?

来自分类Dev

以另一个用户的身份执行历史命令

来自分类Dev

试图让用户关注另一个并显示通知

来自分类Dev

如何允许用户将图像放在html中的另一个图像之上?

来自分类Dev

如何允许组中的另一个用户读取文件

来自分类Dev

可以让一个守护程序在没有超级用户守护程序的情况下以另一个用户身份运行一个进程吗?

来自分类Dev

如何使用smack库将Custom IQ节发送给另一个用户?

来自分类Dev

如何从另一个本地主机验证用户身份?

来自分类Dev

如何以另一个用户的身份进行 git commit & push

来自分类Dev

Discord Python允许一个用户在命令中标识另一个用户

来自分类Dev

如何使函数运行,然后等待用户输入,然后运行另一个函数?

来自分类Dev

如何以root用户身份重新启动另一个用户的用户服务?

来自分类Dev

如何使用意图将用户输入数据从一个活动发送到另一个活动

Related 相关文章

  1. 1

    如何只允许一个用户使用另一个帐户?

  2. 2

    如何只允许一个用户使用另一个帐户?

  3. 3

    使用Parse从一个用户向另一个用户发送推送通知?

  4. 4

    如何以另一个用户身份运行交互式命令

  5. 5

    使用登录的会话以另一个用户身份运行Systemd Service

  6. 6

    如何使用ASP.NET Identity 2.0允许用户模拟另一个用户?

  7. 7

    如何使用 FCM 和 Flutter(一个到另一个设备)发送推送通知?

  8. 8

    以root用户身份运行的脚本可以以普通用户身份运行另一个脚本吗?

  9. 9

    在使用“ mine” X Server的微型电话和扬声器时,以另一个用户身份运行Viber

  10. 10

    以sudo身份作为另一个用户运行cd时出现问题

  11. 11

    以另一个(非root)用户身份运行GUI应用程序

  12. 12

    以另一个没有密码的用户身份运行Shell脚本

  13. 13

    以另一个用户(管理员)身份运行任务管理器

  14. 14

    以另一个无密码用户身份运行命令-sudo失败?

  15. 15

    永久允许xhost访问另一个用户

  16. 16

    如何使用NodeJS以超级用户身份连接到另一个MongoDB数据库?

  17. 17

    Ansible:如何使用“ sudo su -c <COMMAND> <USER>”以另一个用户身份执行命令?

  18. 18

    以另一个用户的身份执行历史命令

  19. 19

    试图让用户关注另一个并显示通知

  20. 20

    如何允许用户将图像放在html中的另一个图像之上?

  21. 21

    如何允许组中的另一个用户读取文件

  22. 22

    可以让一个守护程序在没有超级用户守护程序的情况下以另一个用户身份运行一个进程吗?

  23. 23

    如何使用smack库将Custom IQ节发送给另一个用户?

  24. 24

    如何从另一个本地主机验证用户身份?

  25. 25

    如何以另一个用户的身份进行 git commit & push

  26. 26

    Discord Python允许一个用户在命令中标识另一个用户

  27. 27

    如何使函数运行,然后等待用户输入,然后运行另一个函数?

  28. 28

    如何以root用户身份重新启动另一个用户的用户服务?

  29. 29

    如何使用意图将用户输入数据从一个活动发送到另一个活动

热门标签

归档