Libvirt
libvirtがPolkitをサポートしていない場合、UNIXドメインソケットに対するアクセス制御は、伝統的なユーザグループアクセス制御により行われる。
2種類のソケットがあり、ひとつは読み書き可能、もう1つは読みのみ可能となっている。
読み書きソケットは、アクセス制御が厳しく(0700)、ルートユーザのみが使うことができる。
読みのみソケットは、アクセス制御がオープン (0777) であり、どのユーザも使うことができる。
非特権ユーザにより広いアクセスを許可する場合、libvirtd.confファイルを編集しunix_sock_rw_permsに許可権限を設定し、ユーザグループを、unix_sock_groupに設定する必要がある。例えば、前者の属性を0770にして、後者をwheelグループに設定すると、wheelグループの人全員libvirtdにアクセスできることになる。
TCPソケットを平文のまま用いたlibvirtdは、標準でSASLを認証機構として用いる。
SASL機構は、標準では、Digest-MD5を用いる。これは、基本的なユーザ名とパスワード形式の認証である。
データストリームを暗号化する方法も提供している。このため平文のTCPソケットのセキュリティもTLSソケットを使った場合と同等のセキュリティである。このため、UNIXドメインソケット及びTLSソケットをSASL認証するように設定しておくことは望ましい。この設定は、libvirt.conf設定ファイルのauth_unix_ro, auth_unix_rw, auth_tlsでSASL認証するようにしておく。
使い始めの段階では、ユーザアカウントは定義されていない。このためクライアントがTCP接続することが出来ない。
ユーザを追加し、設定を行うためには、saslpasswd2コマンドを使う。
このコマンドを実行するに当たって、アプリケーションがlibvirtであることを明示的に示す必要がある。
この例では、fredをアカウントに追加する例を示している。
全アカウントのリストを見るためには、sasldblistuser2コマンドを使う。このコマンドでは、libvirtのユーザデータベースを指定する必要がある。このデータベースは/etc/libvirt/passwd.dbにある。
最後に、ユーザアクセスを停止する場合、saslpasswd2コマンドを再び使う。