无权控制从cron联网

问题描述 投票:3回答:2

我使用的命令nmcli c up id networkname更改脚本网络。当我从终端运行,但是当我由cron脚本,我得到一个错误的脚本正常工作:

Error: Connection activation failed: Not authorized to control networking.

网上搜索,我发现了一个bug报告从2011年这个问题:https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/681708,但没有解决。

为什么脚本工作时,从终端上运行,而不是从cron?我想避免把这个根的cron如果可能的话。

networking cron
2个回答
4
投票

货架

决定是否给予访问你的脚本程序被称为polkitd。

要获得什么错误,你可以发出一些信息

nmcli general permissions

它会列出来nmcli相关的一些权限。你会注意到,从cron运行,而在登录时得到不同的结果。

针对台式机使用当前dists中(如Ubuntu和更多),使用许可主动了很多,这意味着它将授予访问权限的用户登录到本地的和积极的X11会议。

您还可以在像这样的终端上运行polkitd

killall polkitd  # first kill running polkitd
G_MESSAGES_DEBUG=all /usr/lib/policykit-1/polkitd

这将让你看到什么polkitd在做什么,它使什么样的决定。

添加.pkla文件/var/lib/polkit-1/localauthority/10-vendor.d/,例如叫它x.pkla。 Imortant:它需要其他如后进行排序辞书org.freedesktop.NetworkManager.pkla或该文件将覆盖你的可爱的文件。

放在这样的事情,将权限授予在admgroup用户。您也可以授予特定用户等。

[Let adm group modify system settings for network]
Identity=unix-group:adm
Action=org.freedesktop.NetworkManager.settings.modify.system
ResultAny=yes

您可能需要多个部分,如果你需要更多的权限,如启用/禁用无线网络添加到该文件。


1
投票

通过@vidstige descripted解决办法帮我解决这个问题。作为@partofthething评论的问题是,如果/var/lib/polkit-1/localauthority/10-vendor.d/是存储.pkla的最佳场所。

阅读man pklocalauthority后,我不这么认为。

在/ etc / polkit-1 / localauthority层次是inteded本地配置上和/ var / lib中/ polkit-1 / localauthority适用于第三方软件包。

难道我们建立了一个第三方的包?我想不是。

10 vendor.d旨在用于由OS销售商的使用。

难道我们是一个OS供应商?我想不是。

我认为/etc/polkit-1/localauthority/50-local.d/is更好的地方.pkla。

使用这种方式也解决了排序问题:

  1. 50-local.d10-vendor.d评价
  2. /etc/polkit-1/localauthority//var/lib/polkit-1/localauthority评价

(我会写这个评论,但50声誉...)

© www.soinside.com 2019 - 2024. All rights reserved.