sudoを使用せずにLDAPユーザーのリストを取得するには? [コピー]

sudoを使用せずにLDAPユーザーのリストを取得するには? [コピー]

私はサーバーに対するsudo以外のsshアクセス権を持っており、そのサーバーのユーザーリストを知りたいです。サーバーが次の理由でldapを使用していると思います。

-bash-4.2$ cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd: files ldap
group: files ldap
shadow: files ldap

hosts: files dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: nis

しかし:

-bash-4.2$ cd /etc/sssd/
-bash: cd: /etc/sssd/: No such file or directory

OR どちら/etc/passwdも私が望むリストを提供しません(私のユーザー名も含まれていません)。ls -lsa /vargetent passwd

それでは、このサーバーのユーザー名とIDのリストを取得する方法を知っている人はいますか?

-bash-4.2$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 7.11 (wheezy)
Release:    7.11
Codename:   wheezy

ベストアンサー1

LDAP 構成が列挙を許可しない可能性が高くなります。

ユーザーIDの範囲がわかっている場合は、すべてのユーザーIDを照会してユーザーのリストを取得できます。

getent passwd {0..65535}

これは、シェルが中{x..y}括弧拡張(zsh、bash、ksh93、tcsh、yash -o中括弧拡張)をサポートしていると仮定します。

Linuxでは、uidは16ビットに制限されなくなり、一部のMicrosoft ADまたはSambaベースのディレクトリサーバーは少なくとも65535より大きい値を使用することがよくあります。{0..2147483647}ただし、お問い合わせはできません。

これはディレクトリサーバーへの多くのLDAPクエリを意味するため、ネットワーク管理者はそれを気に入らない可能性があります。

以降から参考にしてください最初のキーデータベースpasswdはユーザーです名前、IDではなく、各ユーザー名には複数のIDを持つことができますgetent passwd <id>一つアイテムがあるため、一部のユーザーを失う可能性があります。

ユーザーが通常、1 つ以上のグループに属する場合、ユーザーのリストを取得する 1 つの方法は、同じ方法を使用してグループのリストを照会し、そのメンバーを確認することです。

getent group {0..65535} | cut -d: -f4 | tr , '\n' | sort -u

ここではsss使用されません。代わりにinを使用する必要がありますsssldapnsswitch.conf

これは処理されますlibnss-ldap(またはlibnss-ldapdを確認してくださいdpkg -l | grep ldapldap。設定は/etc/libnss-ldap.confまたはまたは/etc/ldap.confにすることができます/etc/ldap/ldap.conf

これを読むことができる場合は、ディレクトリツリーでサーバー名とユーザーの場所の詳細を見つけることができ、それを使用してldapsearch関連情報を取得できます(アクセス権が付与されている場合)。

おすすめ記事