AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[polkit](unix)

Martin Hope
localhost
Asked: 2022-01-06 08:06:50 +0800 CST

如果 make 不应该以 root 身份运行,那么我该如何安装策略文件?

  • 3

我知道 Makefile 不应该要求用户是 root。所以我这样使用/usr/local:

PREFIX=/usr/local

install:
    install -D example $(PREFIX)/bin/example

这很好用。但我还需要为 polkit 安装一个策略文件。唯一有效的路径是/usr/share/polkit-1/actions/. 如果我尝试使用install,我会收到以下错误:

install: cannot create regular file '/usr/share/polkit-1/actions/com.example.policy': Permission denied

如果我不能要求用户以makeroot 身份运行,我应该如何安装我的策略文件?

make polkit
  • 1 个回答
  • 132 Views
Martin Hope
sourcejedi
Asked: 2019-04-26 12:26:28 +0800 CST

polkit 规则:确定用户是否是管理员?

  • 0

polkit 使用 javascript 编写的规则文件进行配置。

您编写自定义函数,并将它们作为参数传递给polkit.addRule(). 当执行 polkit 操作时,函数会按顺序调用,直到返回结果。(否则使用默认值)。

使用两个参数调用您的规则函数: 的名称action和一个subject对象。

您可以使用subject.isInGroup("wheel")来测试用户是否在“wheel”组中。

polkit 默认使用用户是否是“管理员”的概念。这个概念的含义可以使用 polkit.addAdminRule() 以一种有点奇怪的方式进行修改。此默认值因发行版而异。在某些发行版中,管理员被放置在“wheel”组中。在其他发行版中,“sudo”组被认为是管理员。

是否可以以可移植的方式为 polkit.addRule() 编写一个函数,该函数测试主题是否在发行版的管理员组中,而不是对“wheel”或“sudo”组进行硬编码?

polkit javascript
  • 1 个回答
  • 279 Views
Martin Hope
Andres
Asked: 2018-03-09 03:29:15 +0800 CST

尝试从非 root 用户运行“service nginx restart”

  • 4

我对部署世界很陌生,但这就是正在发生的事情。我有一个来自 DigitalOcean 的新 Ubuntu(Ubuntu 16.04.4 LTS)液滴。我安装并配置了 nginx,一切正常。我使用以下命令打开和关闭它:service nginx start/service nginx stop但我需要能够使用另一个名为pepito.

当我尝试运行service nginx start时,pepito我得到:

~# service nginx restart
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to restart 'nginx.service'.
Authenticating as: pepito
Password: 

但是我要从 Capistrano 运行它,所以我不想被要求输入密码,所以我添加了visudo这个:

pepito ALL=(ALL) NOPASSWD: /usr/sbin/service nginx*

再次尝试,同样的问题。继续谷歌搜索和阅读,发现这==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===是一条消息,Polkit所以我读了一些关于它的信息,并在其中创建了以下文件:/etc/polkit-1/localauthority/50-local.d/nginx.pkla

Identity=unix-user:pepito
Action=org.freedesktop.systemd1.manage-units
ResultInactive=yes
ResultActive=yes

当然,当我尝试从pepito. 我不知道还能尝试什么!

polkit services
  • 1 个回答
  • 15055 Views
Martin Hope
AlmuHS
Asked: 2018-02-26 11:59:12 +0800 CST

如何允许使用 pkexec 作为另一个用户运行 notify-send?

  • 2

作为这个问题的延续(如何使用 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 可以从我的脚本中调用 notify-send?

linux polkit
  • 1 个回答
  • 954 Views
Martin Hope
thebunnyrules
Asked: 2017-12-08 19:58:15 +0800 CST

pkexec - 编写 pkexec 策略时如何为 auth_admin_keep 设置自定义超时

  • 3

我刚刚在 freedesktop.org 上阅读 David Z 为 pkexec 编写的参考手册:

https://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html

和

https://www.freedesktop.org/software/polkit/docs/latest/pkexec.1.html

手册说使用 auth_admin_keep 选项只会将您的密码保留 5 到 15 分钟,如果我们想设置自定义超时,我们已经编写了自定义规则。

有谁知道我该如何为超时编写自定义规则?我尝试按照手册进行操作,但我不是编码员,我无法理解合成器,也没有提到与超时相关的合成器。

polkit pkexec
  • 1 个回答
  • 1497 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve