V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
rv54ntjwfm3ug8
V2EX  ›  Linux

policykit 的作用是什么?直接 remove 会不会更安全?

  •  
  •   rv54ntjwfm3ug8 · 2022-01-26 19:25:02 +08:00 · 3335 次点击
    这是一个创建于 814 天前的主题,其中的信息可能已经有所发展或是发生改变。
    不想更新以及无法确定他们漏洞修好了没有。
    10 条回复    2022-01-30 08:36:38 +08:00
    timpaik
        1
    timpaik  
       2022-01-26 19:39:12 +08:00 via Android
    人家叫 Polkit ,用处一搜就有: https://en.wikipedia.org/wiki/Polkit
    建议你自己想想为什么所有主要发行版都预装了这玩意
    secondwtq
        2
    secondwtq  
       2022-01-26 20:26:32 +08:00   ❤️ 1
    大概半年前了解过一下,故事是这样的:当时闲来无事在折腾进程管理(主要目标:把 Chrome 等做得比较差的软件的无用进程全都集中到一个核心去并设置较低优先级,然后专门腾出 1-2 个核运行克劳塞维茨等世界一流软件并赋予较高优先级)。发现一个奇怪的事情:在默认的 ulimit 设置下我自己的用户权限是不允许给进程设置负数 nice 的,但是 pulseaudio 等进程,跑在我自己的用户下,却一直是负数优先级。没有用 root ,好像也没有什么特殊的 capability 。

    仔细看了一下这东西和另一个叫做 rtkit-daemon 的进程有关联,这个进程是跑在 rtkit 用户下,理论上也没有干这个的权力。去瞅了一眼 rtkit 源码,它这个 daemon 启动时会设置一些 capability 来获取随便设置优先级的权限,PulseAudio 等初始化时会通过 DBus 会请求 rtkit 照顾它一下,rtkit 则会再 DBus 请求 PolicyKit 对请求的客户端进行政审判断是否符合提拔的条件( https://github.com/heftig/rtkit/blob/c295fa849f52b487be6433e69e08b46251950399/rtkit-daemon.c#L1111 ),如果可以就安排上。具体条件是写在一个配置文件里的。

    这里面 polkit 的作用是帮助其客户端(即 rtkit )读取这个配置文件,并且根据其定义的规则判断这个进程的背景够不够硬,r 然后告诉 rtkit 。虽然这个配置文件写的好像是全都 pass ... 配置一般是 XML ( https://github.com/heftig/rtkit/blob/c295fa849f52b487be6433e69e08b46251950399/org.freedesktop.RealtimeKit1.policy ),但是也支持简单的 JavaScript 脚本。我系统里还有一堆的规则,虽然好像也都是类似八股的东西没啥实际作用。你说脚本?还没见哪个包用过。
    secondwtq
        3
    secondwtq  
       2022-01-26 20:32:11 +08:00   ❤️ 1
    顺便,这里面,PulseAudio ,rtkit ,Polkit ,以及启动它们的 systemd ,全都是 Red Hat 搞得 ...
    闭环了属于是

    原来 systemd 和 PulseAudio 在 Linux 生态担任的是类似 Go 的角色(某些 Linux 发行版和类 UNIX 系统的卖点之一是“不用 systemd”),Polkit 是打酱油的,不知道之后火力会不会跑 Polkit 上面去。
    secondwtq
        4
    secondwtq  
       2022-01-26 20:32:54 +08:00
    @secondwtq #3 另外 D-Bus 也是 Red Hat 的 ...
    leafre
        5
    leafre  
       2022-01-26 20:39:39 +08:00
    该漏洞不能被远程利用,但黑客如果以非特权用户的身份获得访问权,就能利用它获得 root 权限。
    yanqiyu
        6
    yanqiyu  
       2022-01-26 22:12:34 +08:00
    很多功能,比如普通用户能关机,能增加删除打印机等等都要靠 polkit
    12101111
        7
    12101111  
       2022-01-27 16:22:32 +08:00   ❤️ 2
    polkit 是一个可编程的、带 GUI 的 sudo, 通过安装配置文件(xml 或者 javascript)到 polkit 的配置目录, 程序可以通过 polkit 的 dbus 接口启动一个更高权限的进程, 这个过程可以不需要密码, 或者需要输入密码, 输入密码还能调出输密码的 GUI 弹窗.
    这玩意依赖 Firefox 的 spidermonkey, 因此理论上也是一个漏洞之王. 在 Gentoo 上编译 polkit 会需要 rust 编译器, 而 rust 编译器编译非常慢, 因此不少 gentoo 用户不装这个软件, 似乎并不会影响大部分 GUI 或者命令行的功能.
    julyclyde
        8
    julyclyde  
       2022-01-28 09:24:54 +08:00
    @secondwtq 首先 systemd 并不是 redhat 企业的作品
    其次,什么叫“类似 go”的角色?
    secondwtq
        9
    secondwtq  
       2022-01-30 02:50:33 +08:00   ❤️ 1
    @julyclyde 你这个实际上前一个问题的答案在后一个问题的答案中
    “类似 Go 的角色”指“实际很有用,但又有很多人讨厌”的角色( Electron 貌似更合适,但是那两天本站 Go 的话题比较时髦,所以第一个想到了 Go )。
    systemd 明面上当然跟 Red Hat 没直接关系,但是在“反 systemd 阵营”里有这么一种说法,你把东西做得不顺我意做得复杂了就说你像 Windows ,说你背叛了 UNIX 哲学,皓首匹夫,苍髯老贼,罪恶深重,天地不容,天下之人,愿食汝肉。偏偏这些东西都是 Red Hat 的人做的,所以就形成了一个所谓的类似“Red Hat 学派”的东西。他不一定是组织层面上实际有的一个事情,只是描述一种现象而已。
    不过 Red Hat 确实对这些变化起了推动作用,无论是 systemd 还是 Polkit ,Fedora 都是第一个吃螃蟹的。
    james122333
        10
    james122333  
       2022-01-30 08:36:38 +08:00
    @secondwtq

    那一整串本来就很糟糕 实现的也就一点点
    然后从以前到现在出了多少漏洞了...
    只是对于不会写脚本的比较友好
    刻意复杂除了会坑到别人也会坑到自己
    现在很多东西一个人很难掌握住了 十分糟糕
    不是很认同制造问题给别人处理做大需求这种风气
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2869 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:00 · PVG 16:00 · LAX 01:00 · JFK 04:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.