他の提案の問題は、
- 企業LAN(またはVPN)にアクセスできる場合にのみ機能します
- すべてのコンピュータで常にsudoersファイルを維持する必要があります
- おまけとして、彼らは私にはうまくいきませんでした-まったく
代わりに、私は何かが欲しかった
- 資格情報とsudoアクセスの両方をキャッシュします
- 一元管理されている
実際の解決策は、SSSDを使用し、ADスキーマを拡張することです。このように、SSSDはADから定期的にsudo設定とユーザー資格情報をフェッチし、それらのローカルキャッシュを維持します。その後、sudoルールはADオブジェクトに保存され、ワークステーションのsudoersファイルに触れることなく、コンピューター、ユーザー、コマンドにルールを制限できます。
正確なチュートリアルはここでは説明するには長すぎますが、自動化に役立つステップバイステップガイドといくつかのスクリプトがここにあります。
TL; DR:
広告
sudoの最新リリースを入手し、doc / schema.ActiveDirectoryファイルを取得してインポートします(ドメイン名に応じてドメインパスを変更してください)。
ldifde -i -f schema.ActiveDirectory -c "CN=Schema,CN=Configuration,DC=X" "CN=Schema,CN=Configuration,DC=ad,DC=foobar,DC=com" -j .
ADSI Editで確認します。スキーマの名前付けコンテキストを開き、sudoRoleクラスを探します。
次に、ドメインルートにsudoers OUを作成します。このOUは、すべてのLinuxワークステーションのすべてのsudo設定を保持します。このOUの下に、sudoRoleオブジェクトを作成します。sudoRoleオブジェクトを作成するには、ADSI Editを使用する必要がありますが、一度作成すると、Active Directoryユーザーとコンピューターを使用して変更できます。
レッツは、私は、コンピュータの名前があるとしfoo32linux、ユーザーと呼ばれるstewie.griffinをし、私は彼がそのコンプ上のsudoですべてのコマンドを実行するようにしたいです。この場合、sudoers OUの下にsudoRoleオブジェクトを作成します。sudoRoleには任意の名前を使用できます。コンピューターごとのルールを使用しているので、コンピューター名をそのまま使用します。次に、その属性を次のように設定します。
- sudoHost:foo32linux
- sudoCommand:ALL
- sudoUser:stewie.griffin
コマンドの場合は、/ bin / lessなどの特定のエントリも使用できます。
SSSD
/etc/sssd/sssd.confに少なくとも追加します:
[sssd]
services = nss, pam, sudo
[domain/AD.FOOBAR.COM]
cache_credentials = True
SSSDは数時間ごとに更新されたルールでローカルキャッシュを更新しますが、テストする最も簡単な方法はコンピューターを再起動することです。次に、ADユーザーでログインして確認します。
sudo -l
そのユーザーとコンピューターに追加した関連するすべての項目がリストされます。かんたん!
%Domain^Admins ALL=(ALL) ALL