gpt4 book ai didi

bash - 有没有更好的方法来检查用户 X 是否是 Linux 上 BASH 中组 Y 的成员而不使用 getent?

转载 作者:行者123 更新时间:2023-11-29 09:09:09 25 4
gpt4 key购买 nike

澄清一下:

getent group | grep someGroup | grep someUser

问题:这会在企业环境中转储可能附加到 LDAP 等的整个组数据库,然后使用 grep 过滤它们以查看用户是否在某个组中。

这就是所有组,无处不在。哎哟。

此外,管理命令通常被设置为使它们对管理员以外的任何人都完全无法使用的设置。即使是一个简单的“嘿,他是那个组的成员吗?”类型查询。不能使用 if [ -f -d etc...] 命令,因为我正在为 sodu -u someUser 执行做准备。这就是说脚本没有以相关用户的身份运行。

问题:有没有更好的办法?

最佳答案

如果您同时知道用户名和组(如您所见),则可以使用 id像这样:

id -Gn username | grep '\bgroupname\b'

id -Gn 将显示用户所属的所有组名,然后 grep 将在组存在时返回 0,否则返回 1。 \b 仅匹配单词边界,这使您无法匹配组名的子字符串(例如 every 代表 everyone)。

我相信 id 在所有 Unix 和类 Unix 系统上都可用。它在 Linux、OS X 和 OpenBSD 上肯定存在并且以相同的方式运行。但是,\b 不适用于后者,因为它使用 BSD grep 而不是 GNU grep — 需要替代模式。

关于bash - 有没有更好的方法来检查用户 X 是否是 Linux 上 BASH 中组 Y 的成员而不使用 getent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19461535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com