You're seeing this error when trying to manage virtual machines with libvirt/KVM/QEMU:
Authentication Required
System policy prevents management of local virtualized systems
This is a PolicyKit (polkit) permission issue on Linux systems.
This is the cleanest and most secure solution.
# Add your user to the libvirt group
sudo usermod -aG libvirt $USER
# Also add to kvm group for good measure
sudo usermod -aG kvm $USER
# Log out and log back in for changes to take effect
# Or run this to apply immediately (in new shells):
newgrp libvirtAfter adding to group:
- Log out completely and log back in
- Or reboot your system
- Verify with:
groups(should see libvirt and kvm)
Create a PolicyKit rule to allow your user to manage VMs without password.
Create the rule file:
sudo nano /etc/polkit-1/rules.d/50-libvirt.rulesAdd this content:
/* Allow users in libvirt group to manage VMs without authentication */
polkit.addRule(function(action, subject) {
if (action.id == "org.libvirt.unix.manage" &&
subject.isInGroup("libvirt")) {
return polkit.Result.YES;
}
});Or for a specific user:
/* Allow specific user to manage VMs without authentication */
polkit.addRule(function(action, subject) {
if (action.id == "org.libvirt.unix.manage" &&
subject.user == "sfloess") {
return polkit.Result.YES;
}
});Restart polkit:
sudo systemctl restart polkitMake sure you're connecting to the system URI, not session:
# Wrong (requires auth)
virsh -c qemu:///session list
# Correct (uses system daemon)
virsh -c qemu:///system list
# Or set as default
export LIBVIRT_DEFAULT_URI=qemu:///systemAdd to your ~/.bashrc:
echo 'export LIBVIRT_DEFAULT_URI=qemu:///system' >> ~/.bashrc
source ~/.bashrcFor virt-manager specifically:
Edit connection settings:
- Open virt-manager
- File → Add Connection
- Select "QEMU/KVM"
- Check "Autoconnect"
- Click "Connect"
Or set default connection:
# Edit virt-manager config
mkdir -p ~/.config/virt-manager
cat > ~/.config/virt-manager/virt-manager.conf << 'EOF'
[ui]
system_tray = 0
[connections]
uris = qemu:///system
autoconnect = qemu:///system
EOFsudo systemctl status libvirtdIf not running:
sudo systemctl enable --now libvirtdgroups
# Should show: ... libvirt kvm ...virsh -c qemu:///system list --allShould list VMs without asking for password.
pkaction --verbose --action-id org.libvirt.unix.manageOn Fedora 44+ and RHEL-based systems:
# Install libvirt if not already
sudo dnf install @virtualization
# Enable and start services
sudo systemctl enable --now libvirtd
sudo systemctl enable --now virtnetworkd
# Add user to groups
sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER
# Reboot
sudo reboot# Install libvirt if not already
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
# Add user to groups
sudo adduser $USER libvirt
sudo adduser $USER kvm
# Reboot
sudo reboot# Install libvirt if not already
sudo pacman -S libvirt qemu virt-manager
# Add user to groups
sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER
# Enable and start services
sudo systemctl enable --now libvirtd
# Reboot
sudo reboot1. Check libvirt socket permissions:
ls -la /var/run/libvirt/libvirt-sock
# Should show: srwxrwx--- 1 root libvirt2. Check PolicyKit configuration:
# List all libvirt-related actions
pkaction | grep libvirt3. Check if polkit is running:
sudo systemctl status polkit4. View PolicyKit rules:
ls -la /etc/polkit-1/rules.d/
ls -la /usr/share/polkit-1/rules.d/5. Test with sudo (should work):
sudo virsh list --allIf sudo works but regular user doesn't, it's definitely a permission issue.
sudo nano /etc/polkit-1/rules.d/50-libvirt.rulesAdd:
/* Allow all users to manage VMs without authentication */
polkit.addRule(function(action, subject) {
if (action.id == "org.libvirt.unix.manage") {
return polkit.Result.YES;
}
});Restart polkit:
sudo systemctl restart polkitFor most users, do this:
# 1. Add yourself to groups
sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER
# 2. Log out and log back in (or reboot)
sudo reboot
# 3. Verify it works
virsh -c qemu:///system list --allThat should solve it! ✅
Created by: Claude Code Automated Review System
Last Updated: 2026-05-29