ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux – 当运行’su – username’时,pam_group不会从/etc/security/group.conf添加其他组,但是sshd login会这样做吗?

2019-08-10 02:01:29  阅读:293  来源: 互联网

标签:su linux security pam users


我无法确定为什么su不像PAM配置所暗示的那样.简而言之,使用su成为另一个用户应该根据PAM配置加载辅助组,但是pam_group没有添加/etc/security/group.conf组,我们最终只得到我们的LDAP组.以用户身份通过​​SSH登录时,您拥有来自两个来源的组.

我们的设置离默认的CentOS 6.5不太远,我们使用SSSD通过Kerberos / LDAP提供登录,但据我所知,没有对/etc/pam.d中的任何内容进行直接更改,更改是通过以下方式进行的:

authconfig --updateall --enablesssd --enablesssdauth --enablemkhomedir

当然有单独的/etc/pam.d/su和/etc/pam.d/sshd,但它们都包含调用pam_group.so的相同文件(分别包括system-auth和password-auth,但包含这两个文件)文件是相同的).

/etc/pam.d/su的相关部分:

#%PAM-1.0
auth            sufficient      pam_rootok.so
auth            include         system-auth

/etc/pam.d/sshd的相关部分:

#%PAM-1.0
auth       required     pam_sepermit.so
auth       include      password-auth

在包含的文件中:

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        optional      pam_group.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_sss.so use_first_pass
auth        required      pam_deny.so
...

通过SSH登录时,pam_group.so行通过/etc/security/group.conf添加组,将“apache”组(以及其他组)添加到登录的任何人:

*;*;*;Al0000-2400;apache,devs,rvm

当以root身份运行su – username(或sudo su – …作为其他任何人),并成为另一个用户时,此pam_group似乎不会添加这些其他组.实际上,以root用户身份登录会为你提供这些组(因为pam_group完成了它的工作),运行su – username会导致你丢失这些组,因为su从零开始,只添加从PAM获得的组(基本上是LDAP组) ,因为pam_group不工作)

在这里你可以看到,最初以root身份登录,我有apache(48),devs(501)和rvm(504),但只运行su – 以root身份登录我丢失了除root(0)之外的所有内容.此外,使用su-bob以用户’bob’身份登录,您可以看到我有很多来自LDAP的组(加上来自/ etc / group的一个硬编码组可以正常工作),但是没有来自/etc/security/group.conf .

[root@dev-web pam.d]# id -G
0 48 501 504
[root@dev-web pam.d]# su -
[root@dev-web ~]# id -G
0
[root@dev-web ~]# logout
[root@dev-web pam.d]# su - bob
[bob@dev-web ~]$id -G
1005001 10 1001000 1001001 1001002 1001003 1001004 1001005 1001008 1001009 1001010 1001011 1001012 1001017 1001018 1001025 1001027 1001028 1001033 1001034

最后,作为bob的SSH登录是什么样的 – 再次我有apache(48),devs(501)和rvm(504).

[bob@dev-web ~]$id -G
1005001 10 48 501 504 1001000 1001001 1001002 1001003 1001004 1001005 1001008 1001009 1001010 1001011 1001012 1001017 1001018 1001025 1001027 1001028 1001033 1001034

有人可能会认为su用户名与使用SSH登录是有区别的,在SSH的情况下,有一个密码可用于使用try_first_pass等的各种模块,但由于我们经常使用Kerberos登录,因此没有这些密码.模块.

如果有助于诊断这种差异,我会提供任何进一步的信息(在合理范围内).提前致谢!

编辑:

我打开了PAM调试,pam_group似乎没有为su激发 – 即使我禁用pam_rootok所以我必须登录(以确保它实际上试图通过其余的pam堆栈).无论它在堆栈中的哪个位置,其他项目都会激活(一旦pam_rootok被禁用,因为它的“足够”状态似乎会使堆栈短路).

另外,我只想到测试sudo,它似乎有几乎相同的问题. Root可以sudo自己并保持组,但sudoing给另一个用户只获取LDAP组. /etc/pam.d/sudo只包含/etc/pam.d/system-auth,它与su使用的堆栈相同,所以这不应该是一个惊喜.我认为如果目标用户与当前用户相同,sudo足够聪明,实际上不会删除权限/切换用户,因此根保持组.

解决方法:

我假设您的问题是su-pam文件和pam_rootok模块.

#%PAM-1.0
auth            sufficient      pam_rootok.so
auth            include         system-auth

足够的条款缩短了身份验证过程.因此系统认证永远不会被包括在内,这意味着pam_group模块永远不会被激活.

然后,叹了口气,我读了你的编辑.无论如何,这绝对是一个解决这个问题的开始.也许打开pam_group的调试,看它是否返回一个记录的错误值(man pam_group).

关于sudo,实际上有意义的是,在通过PAM验证用户之后,所有帐户信息都被抛弃/禁用.它有自己的用户添加到组的机制.尝试为相关的sudo条目添加preserve_groups选项.

这一切让我想知道:为什么pam使组模块只与auth相关.事实上,它应该是帐户的一部分.

标签:su,linux,security,pam,users
来源: https://codeday.me/bug/20190810/1635259.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有