第 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
- 多席位支持
logind
与GDM
一起提供 多席位 功能,用户可以与其机器附加另一个 monitor、鼠标或键盘。这样做会出现另一个登录屏幕,用户可以登录,就像他们在使用另一台机器一样。要列出系统上可用的席位,请运行以下命令:$
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 命令。
获取更多信息
systemd-logind.service(8)-
logind
的手册页提供了有关 logind
使用和功能的更多信息。它还涵盖了 systemd-logind
提供的 API (logind D-Bus API 文档)。
logind.conf(5)-
logind.conf
手册页讨论了登录管理器配置文件。
loginctl(1)-
systemd
登录管理器的手册页包括了更多有关多席位功能的信息。