小编bgS*_*k15的帖子

getent passwd -s sss LOCALUSER 显示本地用户

tl;博士

我想轻松快速地判断用户是本地用户还是域用户(不关心哪个域)。

环境

  • freeipa-client-4.6.1-3.fc27.x86_64
  • sssd-1.16.0-4.fc27.x86_64

全文

我正在编写一个 userinfo.sh 脚本,该脚本将显示用户是否是本地用户、sssd、可以 ssh 以及是否被 sssd 允许。

目前我正在使用getent passwd -s sss $USERNAME命令检查用户是否来自域。但是我遇到了一个问题,检查 sssd 数据库返回本地用户!

# getent passwd -s sss 'bgstack15-local'
bgstack15-local:x:1000:1000:bgstack15-local:/home/bgstack15-local:/bin/bash
Run Code Online (Sandbox Code Playgroud)

检查 sss 的数据库(缓存)内容显示 sssd 显然缓存了有关本地用户的各种信息。

# sudo su root -c 'strings /var/lib/sss/db/* | grep bgstack15-local' | sort | uniq
name=bgstack15-local@implicit_files,cn=groups,cn=ih
name=bgstack15-local@implicit_files,cn=groups,cn=implicit_files,cn=sysdb
name=bgstack15-local@implicit_files,cn=users,cn=implicit_files,cn=sysdb
[...output truncated]
Run Code Online (Sandbox Code Playgroud)

我尝试整体清除 sssd 缓存,并且仅针对用户。两者都没有区别。

# sss_cache -U
# sss_cache -u bgstack15-local
Run Code Online (Sandbox Code Playgroud)

用户确实显示为本地用户,我保证它只是本地用户!

getent passwd -s files 'bgstack15-local'
bgstack15-local:x:1000:1000:bgstack15-local:/home/bgstack15-local:/bin/bash
Run Code Online (Sandbox Code Playgroud)

getent(1)getpwent(3)的手册页不能帮助我理解可能发生的事情。sssd(8)告诉我sssd 可以缓存本地用户,这实际上违背了我的要求!sssd.conf(5)的 nss …

users sssd getent

5
推荐指数
1
解决办法
6788
查看次数

标签 统计

getent ×1

sssd ×1

users ×1