- systemd.index 中文手册
- systemd.directives 中文手册
- binfmt.d 中文手册
- bootctl 中文手册
- bootup 中文手册
- busctl 中文手册
- coredump.conf 中文手册
- coredumpctl 中文手册
- crypttab 中文手册
- daemon 中文手册
- dnssec-trust-anchors.d 中文手册
- environment.d 中文手册
- file-hierarchy 中文手册
- halt 中文手册
- hostname 中文手册
- hostnamectl 中文手册
- hwdb 中文手册
- journal-remote.conf 中文手册
- journal-upload.conf 中文手册
- journalctl 中文手册
- journald.conf 中文手册
- kernel-command-line 中文手册
- kernel-install 中文手册
- loader.conf 中文手册
- locale.conf 中文手册
- localectl 中文手册
- localtime 中文手册
- loginctl 中文手册
- logind.conf 中文手册
- machine-id 中文手册
- machine-info 中文手册
- machinectl 中文手册
- modules-load.d 中文手册
- networkctl 中文手册
- networkd.conf 中文手册
- nss-myhostname 中文手册
- nss-mymachines 中文手册
- nss-resolve 中文手册
- nss-systemd 中文手册
- os-release 中文手册
- pam_systemd 中文手册
- portablectl 中文手册
- resolvectl 中文手册
- resolved.conf 中文手册
- shutdown 中文手册
- sysctl.d 中文手册
- systemctl 中文手册
- systemd 中文手册
- systemd-analyze 中文手册
- systemd-ask-password 中文手册
- systemd-ask-password-console.service 中文手册
- systemd-backlight@.service 中文手册
- systemd-binfmt.service 中文手册
- systemd-bless-boot-generator 中文手册
- systemd-bless-boot.service 中文手册
- systemd-boot 中文手册
- systemd-boot-check-no-failures.service 中文手册
- systemd-cat 中文手册
- systemd-cgls 中文手册
- systemd-cgtop 中文手册
- systemd-coredump 中文手册
- systemd-cryptsetup-generator 中文手册
- systemd-cryptsetup@.service 中文手册
- systemd-debug-generator 中文手册
- systemd-delta 中文手册
- systemd-detect-virt 中文手册
- systemd-environment-d-generator 中文手册
- systemd-escape 中文手册
- systemd-firstboot 中文手册
- systemd-fsck@.service 中文手册
- systemd-fstab-generator 中文手册
- systemd-getty-generator 中文手册
- systemd-gpt-auto-generator 中文手册
- systemd-halt.service 中文手册
- systemd-hibernate-resume-generator 中文手册
- systemd-hibernate-resume@.service 中文手册
- systemd-hostnamed.service 中文手册
- systemd-hwdb 中文手册
- systemd-id128 中文手册
- systemd-importd.service 中文手册
- systemd-inhibit 中文手册
- systemd-initctl.service 中文手册
- systemd-journal-gatewayd.service 中文手册
- systemd-journal-remote.service 中文手册
- systemd-journal-upload.service 中文手册
- systemd-journald.service 中文手册
- systemd-localed.service 中文手册
- systemd-logind.service 中文手册
- systemd-machine-id-commit.service 中文手册
- systemd-machine-id-setup 中文手册
- systemd-machined.service 中文手册
- systemd-makefs@.service 中文手册
- systemd-modules-load.service 中文手册
- systemd-mount 中文手册
- systemd-networkd-wait-online.service 中文手册
- systemd-networkd.service 中文手册
- systemd-notify 中文手册
- systemd-nspawn 中文手册
- systemd-path 中文手册
- systemd-portabled.service 中文手册
- systemd-quotacheck.service 中文手册
- systemd-random-seed.service 中文手册
- systemd-rc-local-generator 中文手册
- systemd-remount-fs.service 中文手册
- systemd-resolved.service 中文手册
- systemd-rfkill.service 中文手册
- systemd-run 中文手册
- systemd-run-generator 中文手册
- systemd-sleep.conf 中文手册
- systemd-socket-activate 中文手册
- systemd-socket-proxyd 中文手册
- systemd-suspend.service 中文手册
- systemd-sysctl.service 中文手册
- systemd-system-update-generator 中文手册
- systemd-system.conf 中文手册
- systemd-sysusers 中文手册
- systemd-sysv-generator 中文手册
- systemd-time-wait-sync.service 中文手册
- systemd-timedated.service 中文手册
- systemd-timesyncd.service 中文手册
- systemd-tmpfiles 中文手册
- systemd-tty-ask-password-agent 中文手册
- systemd-udevd.service 中文手册
- systemd-update-done.service 中文手册
- systemd-update-utmp.service 中文手册
- systemd-user-sessions.service 中文手册
- systemd-vconsole-setup.service 中文手册
- systemd-veritysetup-generator 中文手册
- systemd-veritysetup@.service 中文手册
- systemd-volatile-root.service 中文手册
- systemd.automount 中文手册
- systemd.device 中文手册
- systemd.dnssd 中文手册
- systemd.environment-generator 中文手册
- systemd.exec 中文手册
- systemd.generator 中文手册
- systemd.journal-fields 中文手册
- systemd.kill 中文手册
- systemd.link 中文手册
- systemd.mount 中文手册
- systemd.netdev 中文手册
- systemd.network 中文手册
- systemd.nspawn 中文手册
- systemd.offline-updates 中文手册
- systemd.path 中文手册
- systemd.preset 中文手册
- systemd.resource-control 中文手册
- systemd.scope 中文手册
- systemd.service 中文手册
- systemd.slice 中文手册
- systemd.socket 中文手册
- systemd.special 中文手册
- systemd.swap 中文手册
- systemd.syntax 中文手册
- systemd.target 中文手册
- systemd.time 中文手册
- systemd.timer 中文手册
- systemd.unit 中文手册
- sysusers.d 中文手册
- timedatectl 中文手册
- timesyncd.conf 中文手册
- tmpfiles.d 中文手册
- udev 中文手册
- udev.conf 中文手册
- udevadm 中文手册
- user@.service 中文手册
- vconsole.conf 中文手册
pam_systemd 中文手册
名称
pam_systemd — 在 systemd 登录管理器中注册用户会话
大纲
pam_systemd.so
描述
pam_systemd将用户会话注册到 systemd 登录管理器(也就是systemd-logind.service(8) 服务)中,因此也同时注册到了 systemd 控制组(control group)之中。
在登录(login)时,此模块与 systemd-logind.service
服务一起,确保实现如下功能:
如果用户运行时目录(
/run/user/$UID
)不存在,那么就创建该目录或者以"tmpfs
"文件系统挂载该目录,同时根据登录用户为该目录设置磁盘配额、属主与属组。设置
$XDG_SESSION_ID
环境变量的值。如果开启了审计并且 pam_loginuid.so 运行在此模块之前(强烈建议这么做),那么将使用审计会话ID(/proc/self/sessionid
)的值,否则将使用独立的会话计数器的值。为会话创建一个新的 scope 单元。如果此会话是该用户多个并行会话中第一个建立的会话,那么将会在
user.slice
之下自动创建一个针对该用户的 slice 单元,并将新建的 scope 单元置于其中。按照会话用户的身份启动一个user@.service
系统服务实例(也就是运行一个 systemd 用户实例)。
在退出(logout)时,此模块确保实现如下功能:
如果在logind.conf(5) 中设置了
KillUserProcesses=yes
(无论明确还是隐含),那么将会杀死会话中的所有进程。如果此会话是该用户多个并行会话中最后一个退出的会话,那么还会同时终止该用户的 systemd 用户实例以及 slice 单元。如果此会话是该用户多个并行会话中最后一个退出的会话,那么将会删除该用户的运行时目录(
/run/user/$UID
)以及其中的所有内容。
如果系统的 init 进程不是 systemd ,那么此模块什么也不做,并且立即返回PAM_SUCCESS
值。
选项
可以使用的选项如下:
class=
设置会话类。环境变量
XDG_SESSION_CLASS
的值会覆盖此设置(参见"环境变量"小节)。可设为 "user
", "greeter
", "lock-screen
", "background
" 之一。详见 sd_session_get_class(3) 手册。type=
设置会话类型。环境变量
XDG_SESSION_TYPE
的值会覆盖此设置(参见"环境变量"小节)。可设为 "unspecified
", "tty
", "x11
", "wayland
", "mir
" 之一。详见 sd_session_get_type(3) 手册。desktop=
设置会话桌面环境(若存在)。例如 "
GNOME
" 或 "KDE
" 。环境变量XDG_SESSION_DESKTOP
的值会覆盖此设置(参见"环境变量"小节)。建议使用与$XDG_CURRENT_DESKTOP
环境变量(参见 Desktop Entry Specification 规范)完全相同的标识符。注意,此选项只接收一个单独值,而不像$XDG_CURRENT_DESKTOP
那样接受以冒号分隔的列表。详见 sd_session_get_desktop(3) 手册。debug
[=]接受一个可选的布尔值。不带参数(等价于设为"yes")表示在日志中记录详细的调试信息。
提供的模块类型
仅提供 session
类型。
环境变量
此模块将会为用户会话中的进程初始化如下环境变量:
$XDG_SESSION_ID
"会话ID",可用于各种文件名。虽然它通常就是审计会话ID的值(
/proc/self/sessionid
),但是其值本身并没有什么特别的含义。因为在整个系统运行期间,每个 ID 仅会被分配一次,所以可以将其视为本次会话的可靠标签,用于标记文件或其他资源。将"会话ID"与启动标识符(sd_id128_get_boot(3))组合在一起,即可在全局范围内唯一标识当前会话。$XDG_RUNTIME_DIR
在登录期间该用户专属的可读写目录(用户运行时目录)的路径。该目录将在用户首次登录时创建、 并在用户退出最后一个会话时删除。对于同一个用户的多个同时存在的不同会话来说,这些会话中的所有进程看到的
$XDG_RUNTIME_DIR
目录中的内容都完全相同。注意,如果某个用户退出了全部会话,那么该目录中的内容将会彻底丢失,即使之后再次重新登录,该目录中原有的内容也依然无法恢复。应用程序不应该依赖于此目录的自动销毁特性,而应该自己处理过期文件(例如及时删除无用的文件)。如果想要在此目录中保存某个会话专属的私有数据,那么应该在文件名中包含$XDG_SESSION_ID
的值。此目录一般仅用于存放运行时文件系统对象,例如AF_UNIX
套接字、管道(FIFO)、PID 文件……之类。必须确保此目录位于本机系统中,并且能够完整提供所有可能的文件系统特性。详见 XDG Base Directory Specification 文档。如果当前用户不是该会话的登录用户,那么$XDG_RUNTIME_DIR
变量将不会被设置。
pam_systemd 模块将会读取下面的环境变量,因此, PAM 服务可以使用下列环境变量向 pam_systemd 模块传递配置数据。如果在调用PAM模块时尚未设置这些变量,但可以推断出这些变量的值,那么 pam_systemd 模块将会设置它们。因此,只要能够推断出这些变量的值,就会为会话和应用程序初始化这些变量。
$XDG_SESSION_TYPE
会话类型。推荐使用此变量来代替
session=
模块选项。$XDG_SESSION_CLASS
会话类。推荐使用此变量来代替
class=
模块选项。$XDG_SESSION_DESKTOP
会话桌面环境。推荐使用此变量来代替
desktop=
模块选项。$XDG_SEAT
用于注册会话的 席位名称(如果存在的话)。
$XDG_VTNR
用于注册会话的虚拟终端编号(如果存在的话)。仅用于拥有虚拟终端的席位(例如 "
seat0
")。
若尚未设置, pam_systemd 将会根据 $DISPLAY
的值(若存在)初始化$XDG_SEAT
与 $XDG_VTNR
会话限制
在 PAM 栈中位于 pam_systemd.so之前的模块,能够使用 PAM 上下文对象设置会话 scope 限制。这些对象的数据以NULL结尾的C风格字符串提供,并直接映射到对应单元的资源控制指令。注意,这些限制作用于用户的每一个会话,而不是用户的全部进程(可能分属不同的会话)的整体。特别地,运行每个用户的 systemd --user 管理进程及其子进程、并且在任何会话之外跟踪、被所有用户会话共享的 user@.service 服务实例,是不在限制范围之内的。
详见systemd.resource-control(5) 以了解资源控制。详见 pam_set_data(3)以了解如何设置上下文对象。
systemd.memory_max
设置单元的
MemoryMax=
选项systemd.tasks_max
设置单元的
TasksMax=
选项systemd.cpu_weight
设置单元的
CPUWeight=
选项systemd.io_weight
设置单元的
IOWeight=
选项
其他 PAM 模块提供的数据示例:
pam_set_data(handle, "systemd.memory_max", (void *)"200M", cleanup); pam_set_data(handle, "systemd.tasks_max", (void *)"50", cleanup); pam_set_data(handle, "systemd.cpu_weight", (void *)"100", cleanup); pam_set_data(handle, "systemd.io_weight", (void *)"340", cleanup);
例子
#%PAM-1.0 auth required pam_unix.so auth required pam_nologin.so account required pam_unix.so password required pam_unix.so session required pam_unix.so session required pam_loginuid.so session required pam_systemd.so
参见
systemd(1),systemd-logind.service(8),logind.conf(5),loginctl(1),pam.conf(5),pam.d(5),pam(8),pam_loginuid(8),systemd.scope(5),systemd.slice(5),systemd.service(5)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论