Jos*_* R. 16 shutdown gnome debian polkit gnome3
很长一段时间以来,我一直在反对这一点。它与这个问题有关。我想知道当我选择从 GUI 关闭我的 Linux 机器时会发生什么。这似乎记录不佳(如果有的话)。
理想情况下,我希望得到一个与 DE 和 OS 无关的答案。除此之外,我对运行 Gnome 的 Mandriva 2010.1 和 Debian 6.x (Squeeze) 和 7.0 (Wheezy) 的具体情况感兴趣。(如果你密切关注,是的,那就是 Gnome 2 和 Gnome 3)
基本上,我想知道当我按“关闭”或“重新启动”时启动了哪个命令/脚本/脚本序列,以便我可以修改它们的行为。我看过的一些论坛帖子建议进行黑客攻击,/etc/polkit-1/*但例如,这个目录结构只是我的 Debian (Squeeze) 机器上的一个骨架。
任何人都可以帮忙吗?
编辑
到目前为止我尝试过的
shutdown用我自己的脚本替换了可执行文件。这不起作用:当我按下shutdownGnome 时,不执行我的脚本就注销了。/usr/share/menu,没什么帮助。解决方案的可能途径
strace使用 GUI 选项(这甚至可能吗?)shutdown的源代码gnome-session的源代码更新
根据我对下面答案的评论,我查看了下面的polkit操作/usr/share/polkit-1/actions/并发现(在文件中org.freedesktop.consolekit.policy)一个称为org.freedesktop.consolekit.system.stop-multiple-users抛出消息的操作
System policy prevents stopping the system when other users are logged in
Run Code Online (Sandbox Code Playgroud)
我在想(由于org.freedesktop.*命名约定)这是通过 D-BUS 发送到 DM 的某种信号。此外,当其他用户登录时尝试以图形方式关闭时会出现此消息,因此触发它的机制必须与从 GUI 中选择“关闭”或“关闭电源”时触发的机制相同。
任何人都可以确认/反驳吗?是否有可能以某种方式拦截或修改此信号?
这取决于您的显示管理器!(即 KDM、GDM)
请记住您的 DM 以 root 身份运行!(它需要 root 权限才能以您登录的用户身份运行您的会话进程)
当您在 KDE 或 GNOME 中单击关闭时,您的 DE 会向您的 DM 发送信号以在会话终止后关闭电源或重新启动。然后,您的 DE 告诉每个程序结束,一旦所有其他进程终止(或超时),您的 DE 的最后一个进程——会话进程——将终止。
会话进程是在 X11 会话中启动的第一个进程。当它被杀死或终止时,会话终止。你有没有见过在没有 DE 的情况下运行 X 时的 xterm?那是一个会话过程。这个过程kdeinit在 KDE 和gnome-sessionGNOME中被调用。
一旦会话终止,控制权将返回给您的 DM(它一直在等待 X 进程结束),并检查 DE 告诉他做什么。如果它告诉它关闭电源或重新启动,它会这样做。在其他情况下,它只会在 X 中启动一个新的登录屏幕。
这也与您过去可能遇到的问题有关,当与其他一些 DM 结合使用时,某些 DE 无法关闭电源或重新启动,只是为了注销。
在任何情况下,这都不是那么糟糕的记录。GDM 有一个命令的手册页“gdm-control(1)”,它允许您像我之前所说的那样告诉它关闭 ( gdm-control)。KDM 也有出色的文档,并且有一个类似(稍微复杂一点)的实用程序,名为kdmctl.
无需 PolicyKit 即可关闭和重启,但 PolicyKit 可用于当今系统所需的许多用途,例如在没有 root 权限的情况下挂载磁盘、挂起或休眠计算机。它也没有不良记录!
如果您想了解更多关于什么是 PolicyKit 以及它是如何工作的,请查看这个:http ://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html
| 归档时间: |
|
| 查看次数: |
3579 次 |
| 最近记录: |