命令‘getent’

命令‘getent’

第1部分

应该getent是可执行文件吗?

在我的 zsh 设置中,我可以看到 getent 实际上被定义为一个函数

$ which getent   
getent () {
    if [[ $2 = <-> ]]
    then
        grep ":$2:[^:]*$" /etc/$1
    else
        grep "^$2:" /etc/$1
    fi
}

如果我想从 bash shell 执行它,

bash -c  "getent passwd user"  

我收到一个getent: command not found错误。

第2部分

在 Mac OSX 中,getent无论用户 ID 是否有效,都会失败。事实证明,用户 ID 未保存在文件中/etc/passwd。为什么会这样?还有什么替代方案?

答案1

在 Linux、Solaris 和(我相信)*BSD 系统上,getent 是一个可执行文件,并且将查阅与常规查找函数(/etc 文件、LDAP、NIS 等)相同的一组数据库。

Os-x 不提供 getent,但您可以使用dscacheutildsutil程序(与目录服务后端对话)获得类似的功能。在网上搜索“osx getent”会为您提供更多详细信息。

答案2

getent 和 dsutil 在 OSX bash 上也失败了。

正如 Paul 上面指出的那样,这个命令 dscacheutil 可以工作。我能够使用以下命令验证特定用户:

dscacheutil -q user -a name <username>. 

使用此命令的用户列表

dscacheutil -q user | grep 'name:'

相关内容