Session linux PAM会话与linux进程会话相同吗?

Session linux PAM会话与linux进程会话相同吗?,session,pam,Session,Pam,我们都知道,linux系统调用setsid()允许我们在任何时候创建新会话,尽管通常的做法是在登录或启动新的守护进程时。我注意到linux PAM(可插拔认证模块)也有“会话管理”的概念,所以我的问题是: Linux PAM中的会话是否与setsid()创建的会话相同? 在linux PAM会话中通常可以做什么? 谢谢。简短的回答是不,它们是不同的东西,但是处理登录会话的进程应该同时处理这两个问题 PAM会话是libpam内部的概念。简言之,当使用PAM的应用程序启动时,它调用PAM\u sta

我们都知道,linux系统调用setsid()允许我们在任何时候创建新会话,尽管通常的做法是在登录或启动新的守护进程时。我注意到linux PAM(可插拔认证模块)也有“会话管理”的概念,所以我的问题是: Linux PAM中的会话是否与setsid()创建的会话相同? 在linux PAM会话中通常可以做什么?
谢谢。

简短的回答是不,它们是不同的东西,但是处理登录会话的进程应该同时处理这两个问题

PAM会话是libpam内部的概念。简言之,当使用PAM的应用程序启动时,它调用
PAM\u start
,然后调用一个或多个PAM函数,这些函数又由libpam分派到PAM模块。其中两个调用是
pam\u open\u session
pam\u close\u session

PAM会话的目标是处理(通常是交互式的,但不一定)登录会话的设置和卸载。因此,会话组中配置的PAM模块通常会执行诸如将用户添加到utmp、设置任何每次登录环境(如本地tmpdir,如果配置了这样的环境)、存储Kerberos凭据等操作。在会话关闭时,他们将撤消这些更改

请注意,这意味着调用
pam\u open\u session
的进程必须在登录会话的长度内停留,以便在结束时调用
pam\u close\u session
。没有什么魔法能让这一切发生

setsid
的级别要低得多<代码>设置ID与进程组处于大致相同的级别,进程组是通常连接到tty(控制终端)的相关进程组。这主要是为了shell会话管理:您的会话是在关闭shell时通常应该接收SIGHUP的所有进程,您可能希望使用进程管理(例如,挂起和继续)来管理这些进程,等等。shell会话组中的所有进程都将一个控制终端设置为伪tty,这对进程控制和信号处理具有各种低级含义