KVMをrootではなくユーザーとして実行するようにするこれらのコマンドは、実際に何をしますか?

KVMをrootではなくユーザーとして実行するようにするこれらのコマンドは、実際に何をしますか?

私はフォローしていますKVMをroot以外のユーザーとして実行するためのガイドというファイルを作成するには花式槽正常な仕事。問題は、kinoiteで次のコマンドを実行しようとしているため、/ etcディレクトリを変更できないことです。

$ sudo sed -i "s/#user = \"root\"/user = \"$(id -un)\"/g" /etc/libvirt/qemu.conf
$ sudo sed -i "s/#group = \"root\"/group = \"$(id -gn)\"/g" /etc/libvirt/qemu.conf
$ sudo usermod -a -G kvm $(id -un)
$ sudo usermod -a -G libvirt $(id -un)
$ sudo systemctl restart libvirtd
$ sudo ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/

このコマンドは何をしており、不変のディストリビューションで動作するようにするにはどうすればよいですか?

ベストアンサー1

$ sudo sed -i "s/#user = \"root\"/user = \"$(id -un)\"/g" /etc/libvirt/qemu.conf

id -unコマンドを実行したユーザーの名前を印刷します。

sudos魔女userとdo)は、他のユーザーとして別のコマンドを実行するコマンドです。指定しないと、通常はrootスーパーユーザー権限を持つユーザーであり、ファイルシステムのファイルを変更できる人などの一般的なアクセス制御は適用されません。そのユーザーとしてコマンドを実行する権限を明示的に付与する必要があり、この操作が機能するには、身元を確認するための資格情報を提供する必要があります。

sedsストリーマーですed。一部のsed実装は-iオプションでファイルの内容に対して機能できるため、iファイルを次のように編集できます。小川

このsedコマンド(70年代初頭から)は非常に単純なプログラミング言語を理解しています。その言語には、パターンに一致する文字列を置き換えるs/pattern/replacement/flagsテキストエディタと同じコマンドがあります。ed

ここでパターンは#user = "root"代替isです。つまりuser = "<output-of-the-id-command>"g各行を必要なだけ何度も実行できるという意味です(ここでは意味がないがおそらく無害です)。

#user = "root"効果的に、これはファイルからその行のコメントを削除し、root呼び出し元のユーザーに置き換えます。

編集するファイルは次のとおりです。libvirt用のQEMUドライバの設定。ファイルには以下が含まれます。

# The user for QEMU processes run by the system instance. It can be
# specified as a user name or as a user id. The qemu driver will try to
# parse this value first as a name and then, if the name doesn't exist,
# as a user id.
#
# Since a sequence of digits is a valid user name, a leading plus sign
# can be used to ensure that a user id will not be interpreted as a user
# name.
#
# By default libvirt runs VMs as non-root and uses AppArmor profiles
# to provide host protection and VM isolation. While AppArmor
# continues to provide this protection when the VMs are running as
# root, /dev/vhost-net, /dev/vhost-vsock and /dev/vhost-scsi access is
# allowed by default in the AppArmor security policy, so malicious VMs
# running as root would have direct access to this file. If changing this
# to run as root, you may want to remove this access from
# /etc/apparmor.d/abstractions/libvirt-qemu. For more information, see:
# https://launchpad.net/bugs/1815910
# https://www.redhat.com/archives/libvir-list/2019-April/msg00750.html
#
# Some examples of valid values are:
#
#       user = "qemu"   # A user named "qemu"
#       user = "+0"     # Super user (uid=0)
#       user = "100"    # A user named "100" or a user with uid=100
#
#user = "root"

また、見ることができますhttps://libvirt.org/drvqemu.html#posix-users-groups

したがって、libvirtdコマンドを実行したユーザーとして実行するように求められます。qemu

$ sudo sed -i "s/#group = \"root\"/group = \"$(id -gn)\"/g" /etc/libvirt/qemu.conf

設定は同じですgroup

$ sudo usermod -a -G kvm $(id -un)

これにより、現在のユーザーがUnixグループのメンバーとして追加されますkvm。このグループには、KVMハイパーバイザー機能を使用するためにqemuに必要な/ dev / kvmへの読み取り+書き込みアクセス権があります。

$ sudo usermod -a -G libvirt $(id -un)

libvirtメンバーシップを通じてシステムレベルの仮想マシンを管理できるグループの場合も同様です。

$ sudo systemctl restart libvirtd

libvirtdこの設定を適用するには、デーモンを再起動してください。

$ sudo ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/

libvirtd サービスの apparmor をディセーブルにすると、libvirtd およびこのコマンドが実行する一部のコマンドが実行できない多くの操作が軽減されます。これらのいくつかは、qemuがrootではなくユーザーとして正しく機能するために必要な場合があります。

このコマンドは何をしており、不変のディストリビューションで動作するようにするにはどうすればよいですか?

これはディストリビューションとその詳細によって異なる可能性があります。不変

おすすめ記事