第 2 章 logind

logind”(更确切的说,是“systemd-logind”)是管理用户登录的系统服务。这项服务将负责以下内容:
  • 追踪用户和会话,其过程以及它们的空闲状态,
  • 为用户进程创建控制组,
  • 为用户提供以 PolicyKit 为基础的操作访问,比如系统关闭或休眠操作,
  • 执行应用程序的关机/休眠抑制逻辑,
  • 开机/休眠硬件钥匙的处理,
  • 为用户提供 multi-seat (多座位)管理,会话切换管理,以及设备访问管理,
  • 在虚拟终端(控制台)激活自动大量生成文本登录(getty),管理用户运行时目录。
logind”服务是红帽企业版 Linux 7 中新的初始化系统,它取代了红帽企业版 Linux 6 中的“upstart”初始化系统,并与“systemd”紧密结合。这个变化带来了许多新特点和新功能。以下是对那些最重要的特点与功能的概述:
ConsoleKit
ConsoleKit”框架在红帽企业版 Linux 7 中是禁用的。“systemd”提供与之相同的功能。“ConsoleKit”和“logind”都是追踪当前运行用户会话的服务。

注意

ConsoleKit”之前能够在系统中的活动会话改变时,运行任意的外壳脚本(使用虚拟终端切换)。现在将不再提供这个功能。
/var/log/ConsoleKit/history 文件
ConsoleKit”之前可以向 /var/log/ConsoleKit/history 发送日志文件,而现在的“logind”则不支持这个功能。这个文件被传统的追踪系统中所有登录和登出的 wtmp 文件和 utmp 文件所取代。/var/log/ConsoleKit/history 所提供的信息与 wtmp 文件所提供的信息基本相同,只是格式不同而已。考虑到功能上的重叠,“logind”仅仅扮演了“wtmp”文件的角色。
seat.d 脚本
但是既然已不再使用“ConsoleKit”,则“seat.d”脚本语言也不再是“ConsoleKit”框架中的一部分,并已由“systemd-logind”替代。
ck-list-sessions 命令
ConsoleKit”提供了返回最近用户扩展信息的 ck-list-sessions 命令,不仅是普通用户而且包含对“GDM”进行 GUI 访问。要达到相似结果也可以运行“loginctl”命令。
$ loginctl list-sessions
multi-seat 支持(多座位支持)
logind”和“GDM”提供了使用户可以将其他显示器,鼠标,或者键盘添加到 multi-seat 的功能。这么做的话,就会出现一个额外的登录界面,用户在使用其他的设备时也可进行登录。
运行以下命令可以列出系统中可用的座位:
$ loginctl list-seats
运行以下命令可以显示系统中某个特定座位的状态:
$ loginctl seat-status seat
其中 seat 是座位的名称,比如“seat0”。
运行以下命令,为某个特别的座位指派特定的硬件:
# loginctl attach seat device
其中 seat 是座位的名称,比如“seat1”,同时 device 是用 /sys 设备路径指定的设备名称,比如/sys/devices/pci0000:00/0000:00:02.0/drm/card0
如果要更改任务,将硬件指定到另一个座位,或者使用 loginctl flush-devices 命令。

2.1. 获取更多信息

  • systemd-logind.service(8)–“logind”的手册页提供了更多关于“logind”用量和特征的信息。它同时涵盖了“systemd-logind”提供的 API(logind D-Bus API 文件)。
  • logind.conf(5) – 讨论登录管理员配置文件的 logind.conf 的手册页。
  • loginctl(1)–“systemd”登录管理员的手册页包含了更多 multi-seat 特点的信息。