我想知道如何避免将一些用户添加到组中?我需要避免某些用户加入某个组——我想锁定某些用户(而不是全部)的组。
细节
lgroupmod -L dba ==> This prevents users from using the group password and
gpasswd -R dba ==> is restriction to a group
我需要为某些用户锁定一个组不是对于所有小组成员。
答案1
您似乎使用了错误的工具来完成这项工作。群组密码是一项很少使用的功能;大多数时候,您可以将每个用户分配到您想要的任何组,并且他们在登录时获得组权限,而无需执行任何特殊操作。
如果您希望用户在想要使用组权限时必须采取某些操作(例如出于日志记录目的),或者明确他们应该仅在特殊情况下使用组权限,最明显的方法是使用须藤。对于应该有权访问该组的用户,请运行visudo
以在文件中添加规则sudoers
,例如
alice ALL = (:dba) ALL
并告诉用户运行sudo -g dba somecommand
而不是echo 'somecommand' | newgrp dba
.
如果您有一个非常不寻常的场景,您确实需要用户输入共享密码才能访问该组,但您只希望某些用户有权访问该组,您仍然可以利用newgrp
.这个想法是将其限制为某些用户。利用newgrp
而不是自己编写,因为安全地提升权限很棘手。 Linuxnewgrp
不使用 PAM,可能是因为基本上没有人使用newgrp
.因此,获取您的发行版上的版本的源代码,并修改它以读取文件/etc/gshadow.dba
。读取不同文件的目的是避免通过其他途径增加组权限,例如sg
.将包含dba
组及其密码的行添加到/etc/gshadow.dba
, not /etc/gshadow
。编译修改后的newgrp
,将其安装到/usr/local/bin/newgrp-dba
,并设置其权限,以便只有某些用户可以执行它:
chmod u=srwx,go= /usr/local/bin/newgrp-dba
setfacl -m user:alice:x /usr/local/bin/newgrp-dba
答案2
/etc/group
您可以向或添加密码/etc/gshadow
。格式与 类似/etc/passwd
,只是字段数不同。不过,您仍然需要将密码输入第二个字段。