第 2 章 logind
logind (或者更具体地说是 systemd-logind)是管理用户登录的系统服务。此服务负责以下操作:
- 记录用户和会话、它们的进程及空闲状态,
- 为用户进程创建控制组,
- 为用户提供基于 PolicyKit 的访问,如系统关闭或休眠等操作。
- 为应用程序实现一个关闭/休眠阻止逻辑,
- 处理电源/休眠硬件键,
- 用户的多席位管理、会话切换管理和设备访问管理。
- 对虚拟终端(控制台)激活和用户运行时目录管理自动生成文本登录(gettys)。
logind 服务与 systemd 深度集成(Red Hat Enterprise Linux 7 中的新初始化系统),并替换了 Red Hat Enterprise Linux 6 中的 upstart 初始化系统。这一变化带来了许多新的特性和功能。以下是对其中一些最重要的总结:
- ConsoleKit
ConsoleKit框架在 Red Hat Enterprise Linux 7 中已弃用。现在,systemd提供了等效的功能。ConsoleKit和logind都是用于跟踪当前运行的用户会话的服务。注意ConsoleKit能够在系统中的活动会话更改时运行任意 shell 脚本(使用虚拟终端切换)。不再提供此功能。- /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
$ loginctl list-sessionsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 多席位支持
logind与GDM一起提供 多席位 功能,用户可以与其机器附加另一个 monitor、鼠标或键盘。这样做会出现另一个登录屏幕,用户可以登录,就像他们在使用另一台机器一样。要列出系统上可用的席位,请运行以下命令:loginctl list-seats
$ loginctl list-seatsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要显示系统上特定座位的状态,请运行以下命令:loginctl seat-status seat
$ loginctl seat-status seatCopy to Clipboard Copied! Toggle word wrap Toggle overflow 其中 seat 是席位的名称,如seat0。要给特定的座位分配特定的硬件,请运行以下命令:loginctl attach seat device
# loginctl attach seat deviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 其中 seat 是席位的名称,如seat1,device 是使用 /sys 设备路径指定的设备名称,如。/sys/devices/pci0000:00/0000:00:02.0/drm/card0要更改分配,请将硬件分配给不同的席位,或使用 loginctl flush-devices 命令。
获取更多信息
systemd-logind.service(8)-
logind 的手册页提供了有关 logind 使用和功能的更多信息。它还涵盖了 systemd-logind 提供的 API (logind D-Bus API 文档)。
logind.conf(5)-
logind.conf 手册页讨论了登录管理器配置文件。
loginctl(1)-
systemd 登录管理器的手册页包括了更多有关多席位功能的信息。