Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第 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 提供了等效的功能。ConsoleKitlogind 都是用于跟踪当前运行的用户会话的服务。
注意
ConsoleKit 能够在系统中的活动会话更改时运行任意 shell 脚本(使用虚拟终端切换)。不再提供此功能。
/var/log/ConsoleKit/history 文件
在以前的版本中,ConsoleKit 将日志文件发送到 /var/log/ConsoleKit/history,当前 logind 不支持。该文件已被传统的 wtmputmp 文件替代,这些文件现在跟踪系统中的所有登录和注销。/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
多席位支持
logindGDM 一起提供 多席位 功能,用户可以与其机器附加另一个 monitor、鼠标或键盘。这样做会出现另一个登录屏幕,用户可以登录,就像他们在使用另一台机器一样。
要列出系统上可用的席位,请运行以下命令:
$ loginctl list-seats
要显示系统上特定座位的状态,请运行以下命令:
$ loginctl seat-status seat
其中 seat 是席位的名称,如 seat0
要给特定的座位分配特定的硬件,请运行以下命令:
# loginctl attach seat device
其中 seat 是席位的名称,如 seat1device 是使用 /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 登录管理器的手册页包括了更多有关多席位功能的信息。