Proxmox VE uses a role-based access control (RBAC) system. Roles define what actions a user can perform, and permissions associate users or groups with specific roles on specific resources.
Built-in Roles
Standard Roles
Role
Description
Privileges
NoAccess
No access
None
PVEAudit
Read-only access
Auditor
PVEUser
Standard user
VM.PowerMgmt, VM.Monitor
PVEPowerAdmin
Power user
VM.PowerMgmt, VM.Monitor, VM.Console
PVEDisplayViewer
View-only console
VM.Console
PVEProxy
Proxmox Web Proxy
Sys.Audit, Sys.Console, Sys.Modify
PVESelfUser
Self-service user
Sys.Audit, PVESelfService
PVEAdmin
Full administrator
All privileges
VM-Specific Roles
Role
Description
VM Admin
Full VM control (VM.*)
VM Power User
Start, stop, restart (VM.PowerMgmt)
VM Monitor
View-only access (VM.Monitor)
VM Console
Console access only
VM Backup
Backup/restore access
Datacenter Roles
Role
Description
SysAdmin
System administration
SysAudit
System read-only
SysModifier
System configuration
SysPowerMgmt
Power management
SysConsole
Console access
Creating Custom Roles
# Create custom rolepveum role add CustomRole --privelist "VM.PowerMgmt,VM.Monitor"# Update role privilegespveum role update CustomRole --addpriv "VM.Console"# Delete rolepveum role delete CustomRole
Permissions Management
Granting Permissions
# Grant VM accesspveum acl modify /vms/100 --user admin@example.com --role PVEPowerAdmin# Grant datastore accesspveum acl modify /storage/local --user admin@example.com --role PVEAudit# Grant to grouppveum acl modify /vms/100 --group developers --role PVEUser# Grant to API tokenpveum acl modify /vms/100 --tokenid 'admin@example.com!mytoken' --role PVEUser
Revoking Permissions
# Remove user permissionpveum acl delete /vms/100 --user admin@example.com# Remove group permissionpveum acl delete /vms/100 --group developers
# Create developer grouppveum group add developers# Add users to grouppveum group adduser developers john@example.compveum group adduser developers jane@example.com# Grant VM access to grouppveum acl modify /vms/ --group developers --role PVEUser
Contractor Access (Limited)
# Create contractor rolepveum role add ContractorRole --privelist "VM.Monitor,VM.PowerMgmt"# Grant limited accesspveum acl modify /vms/200 --user contractor@example.com --role ContractorRole# Set expirationpveum user update contractor@example.com --expire 2025-06-30
Auditing Access
# List all ACLspveum acl list# List ACLs for specific VMpveum acl list /vms/100# List user permissionspveum user list admin@example.com
Best Practices
Use groups - Manage permissions at group level
Principle of least privilege - Grant minimum necessary permissions
Regular audits - Review permissions quarterly
Separate roles - Differentiate between admin, power users, and regular users