クライアント(Ubuntu 14.04)はLDAPログインでログインできます。ネットワークがなくなると、LDAPでログインできなくなります。
それらのパスワードとユーザー名をキャッシュして、LDAP接続がなくてもラップトップが機能するようにする方法はありますか?
DebianとUbuntuは、ネットワークログイン認証情報をキャッシュするlibpam-ccredsパッケージを提供しています。パッケージの説明から:
このパッケージは、ネットワークが利用できない場合に、LinuxワークステーションがエンタープライズIDを使用してローカルで認証するための手段を提供します。 nss_updatedbユーティリティと組み合わせて使用すると、ネットワークディレクトリを切断して使用するためのメカニズムが提供されます。これらは、libpam-ldapおよびlibnss-ldapと連携するように設計されています。
sssdデーモン を使用できます。
設定ファイルにキャッシュ資格情報機能があります:
cache_credentials = true
ログイン後、LDAPサーバーにアクセスせずに再度ログインできるように、ユーザーの資格情報がキャッシュされます。
私のOpenLDAPはSSLまたはTLSを使用しない基本的なセットアップでしたが、これが問題だったと思います。
http://www.turnkeylinux.org/openldap を介してOpenLDAP用のアプライアンスをダウンロードし、数分でセットアップしました。このアプライアンスには、自己署名証明書に基づくSSLおよびTLSがあります。
これで、TLSが構成され、自己署名証明書が設定されたので、sssd.confファイルでオプションldap_tls_reqcert =を使用する必要はありません。
Linuxで資格情報をキャッシュするには、他の回答で述べたように、主に2つのプログラムsssdおよびccredsが使用されます。 sssd
を試してみましたが、必要のない追加の共有ライブラリと依存パッケージが大量にインストールされました。そこで、軽量のccreds
を使用することにしました。しかし、私はそれを使用する方法の多くの詳細な説明を見つけることができませんでした、主にこのプログラムを使用するための一般的なヒントのみ。そこで、私は@ AndrewSchulmanの答えを詳しく説明し、私がそれをどのように管理したかをコミュニティと共有します。私はDebianバスターインストールを使用していて、動作する オンラインKerberos/OpenLDAP認証/承認システム を使用しています。 kinit
およびログオン時に有効なKerberosチケットを取得します。
まず、必要なプログラムをインストールします。
~$ Sudo apt install libnss-db nss-updatedb libpam-ccreds
Sudo pam-auth-update
オプションを設定します
[*] Ccreds credential caching - password saving
[*] Ccreds credential caching - password checking
/etc/nsswitch.conf
次のように変更する必要があります。
passwd: files ldap [NOTFOUND=return] db
group: files ldap [NOTFOUND=return] db
これで、キャッシングデータベースが作成されているかどうかを確認できます。
~$ Sudo nss_updatedb ldap
passwd... done.
group... done.
~$ ls -l /var/lib/misc/*.db
-rw-r--r-- 1 root root 8192 Feb 26 12:46 /var/lib/misc/group.db
-rw-r--r-- 1 root root 8192 Feb 26 12:46 /var/lib/misc/passwd.db
~$ su -l ingo
ingo: ~$ logout
~$ ls -l /var/cache/.security.db
-rw------- 1 root ingo 8192 Feb 26 12:55 /var/cache/.security.db
~$ Sudo cc_dump
Credential Type User Service Cached Credentials
----------------------------------------------------------------------------------
Salted SHA1 ingo any c2da4cd14bd00bd7ecd72ab15e565e9149b46fd5
いいえ、それは私のSHA1資格情報ではありません;-)コマンドラインでクリアテキストのパスワードを使用しているため、bash履歴にキャッシュしません。
~$ history -a
~$ Sudo cc_test -validate any ingo <password>
pam_cc_validate_credentials: Success
~$ history -c
~$ history -r
LDAPディレクトリでのみ定義されているユーザーとグループが見つかり、オフラインであってもログインできるはずです。
~$ Sudo ip link set eth0 down
~$ getent passwd|group
~$ su -l ingo
ingo: ~$ logout
~$ Sudo ip link set if up
インストール後に遅延が発生しましたが、再起動後には消えます。