两者有什么区别
su target-user
和
login target-user
?后者可能需要sudo
。
在我看来,它们都为target-user
.谢谢。
答案1
在我看来,它们都为目标用户创建了一个登录会话。
事实上,他们没有。 su
不创建登录会话。它“切换用户”以在不同用户帐户的支持下运行程序,将权限(该帐户的权限)添加到该用户可用的权限总数中。现存的它运行的登录会话。
事实上,login
程序并没有创建登录会话任何一个。它需要登录会话,运行的进程login
标记为会议主持人进程和附加的控制终端已由调用它的任何程序设置。 login target-user
,假设 C shell 的内置login
命令实际上是一个exec
,则选择现存的已为另一个用户帐户设置登录会话。这当然会带来目前众所周知的风险。
这当然是考虑到内核的概念登录会话,其中涉及到会议主持人, A控制终端, 和进程组。 systemd 人员发明了他们自己的完全应用程序模式的登录会话概念,并通过systemd-logind
PAM 插件进行管理。这里的规则略有不同,部分原因是 systemd 人们通过将关闭时的服务停止与会话挂起混为一谈而搞砸了(仍然需要解决这个问题)。但su
也不会创建这种类型的登录会话。
进一步阅读
- 乔纳森·德博因·波拉德 (2014)。不要滥用 su 来删除用户权限。常见答案。
- https://unix.stackexchange.com/a/405780/5132
- (sd-pam) 进程如何摆脱非特权的“pam_session_close()”?
- pam_unix 和 pam_systemd 有什么区别?
- 哪个 systemd 服务在帧缓冲区设备上启动文本控制台?
- 乔纳森·德·博因·波拉德 (2016-06-01)。回复:systemd 在用户注销后杀死后台进程。 Debian 错误 #825394。