* `Port` (`port`): The port that the Microsoft AD server listens on
+
+NOTE: Microsoft AD normally checks values like usernames without case
+sensitivity. To make {pve} do the same, you can disable the default
+`case-sensitive` option by editing the realm in the web UI, or using the CLI
+(change the `ID` with the realm ID):
+`pveum realm modify ID --case-sensitive 0`
+
[[pveum_ldap_sync]]
Syncing LDAP-Based Realms
~~~~~~~~~~~~~~~~~~~~~~~~~
+
{pve} provides a key generation tool (`oathkeygen`) which prints out a random
key in Base32 notation, that can be used directly with various OTP tools, such
-as the `oathtool` command line tool, or on Android Google Authenticator,
+as the `oathtool` command-line tool, or on Android Google Authenticator,
FreeOTP, andOTP or similar applications.
YubiKey OTP::
There is no server setup required. Simply install a TOTP app on your
smartphone (for example, https://freeotp.github.io/[FreeOTP]) and use
-the Proxmox Backup Server web-interface to add a TOTP factor.
+the Proxmox Backup Server web interface to add a TOTP factor.
[[user_tfa_setup_webauthn]]
=== WebAuthn
u2f: appid=https://mypve.example.com:8006
----
-For a single node, the 'AppId' can simply be the address of the web-interface,
+For a single node, the 'AppId' can simply be the address of the web interface,
exactly as it is used in the browser, including the 'https://' and the port, as
shown above. Please note that some browsers may be more strict than others when
matching 'AppIds'.
* `Administrator`: has full privileges
* `NoAccess`: has no privileges (used to forbid access)
-* `PVEAdmin`: can do most tasks, but has no rights to modify system settings (`Sys.PowerMgmt`, `Sys.Modify`, `Realm.Allocate`)
+* `PVEAdmin`: can do most tasks, but has no rights to modify system settings
+ (`Sys.PowerMgmt`, `Sys.Modify`, `Realm.Allocate`) or permissions
+ (`Permissions.Modify`)
* `PVEAuditor`: has read only access
* `PVEDatastoreAdmin`: create and allocate backup space and templates
* `PVEDatastoreUser`: allocate backup space and view storage
+* `PVEMappingAdmin`: manage resource mappings
+* `PVEMappingUser`: view and use resource mappings
* `PVEPoolAdmin`: allocate pools
-* `PVESysAdmin`: User ACLs, audit, system console and system logs
+* `PVEPoolUser`: view pools
+* `PVESDNAdmin`: manage SDN configuration
+* `PVESDNUser`: access to bridges/vnets
+* `PVESysAdmin`: audit, system console and system logs
* `PVETemplateUser`: view and clone templates
* `PVEUserAdmin`: manage users
* `PVEVMAdmin`: fully administer VMs
example:
[source,bash]
----
-pveum role add PVE_Power-only --privs "VM.PowerMgmt VM.Console"
+pveum role add VM_Power-only --privs "VM.PowerMgmt VM.Console"
pveum role add Sys_Power-only --privs "Sys.PowerMgmt Sys.Console"
----
+NOTE: Roles starting with `PVE` are always builtin, custom roles are not
+allowed use this reserved prefix.
Privileges
~~~~~~~~~~
Node / System related privileges::
-* `Permissions.Modify`: modify access permissions
-* `Sys.PowerMgmt`: node power management (start, stop, reset, shutdown, ...)
-* `Sys.Console`: console access to node
-* `Sys.Syslog`: view syslog
-* `Sys.Audit`: view node status/config, Corosync cluster config, and HA config
-* `Sys.Modify`: create/modify/remove node network parameters
-* `Sys.Incoming`: allow incoming data streams from other clusters (experimental)
* `Group.Allocate`: create/modify/remove groups
+* `Mapping.Audit`: view resource mappings
+* `Mapping.Modify`: manage resource mappings
+* `Mapping.Use`: use resource mappings
+* `Permissions.Modify`: modify access permissions
* `Pool.Allocate`: create/modify/remove a pool
* `Pool.Audit`: view a pool
-* `Realm.Allocate`: create/modify/remove authentication realms
* `Realm.AllocateUser`: assign user to a realm
+* `Realm.Allocate`: create/modify/remove authentication realms
+* `SDN.Allocate`: manage SDN configuration
+* `SDN.Audit`: view SDN configuration
+* `Sys.Audit`: view node status/config, Corosync cluster config, and HA config
+* `Sys.Console`: console access to node
+* `Sys.Incoming`: allow incoming data streams from other clusters (experimental)
+* `Sys.Modify`: create/modify/remove node network parameters
+* `Sys.PowerMgmt`: node power management (start, stop, reset, shutdown, ...)
+* `Sys.Syslog`: view syslog
* `User.Modify`: create/modify/remove user access and details.
Virtual machine related privileges::
+* `SDN.Use`: access SDN vnets and local network bridges
* `VM.Allocate`: create/remove VM on a server
-* `VM.Migrate`: migrate VM to alternate server on cluster
-* `VM.PowerMgmt`: power management (start, stop, reset, shutdown, ...)
-* `VM.Console`: console access to VM
-* `VM.Monitor`: access to VM monitor (kvm)
-* `VM.Backup`: backup/restore VMs
* `VM.Audit`: view VM config
+* `VM.Backup`: backup/restore VMs
* `VM.Clone`: clone/copy a VM
-* `VM.Config.Disk`: add/modify/remove disks
* `VM.Config.CDROM`: eject/change CD-ROM
* `VM.Config.CPU`: modify CPU settings
+* `VM.Config.Cloudinit`: modify Cloud-init parameters
+* `VM.Config.Disk`: add/modify/remove disks
+* `VM.Config.HWType`: modify emulated hardware types
* `VM.Config.Memory`: modify memory settings
* `VM.Config.Network`: add/modify/remove network devices
-* `VM.Config.HWType`: modify emulated hardware types
* `VM.Config.Options`: modify any other VM configuration
-* `VM.Config.Cloudinit`: modify Cloud-init parameters
+* `VM.Console`: console access to VM
+* `VM.Migrate`: migrate VM to alternate server on cluster
+* `VM.Monitor`: access to VM monitor (kvm)
+* `VM.PowerMgmt`: power management (start, stop, reset, shutdown, ...)
+* `VM.Snapshot.Rollback`: rollback VM to one of its snapshots
* `VM.Snapshot`: create/delete VM snapshots
Storage related privileges::
* `Datastore.AllocateTemplate`: allocate/upload templates and ISO images
* `Datastore.Audit`: view/browse a datastore
+WARNING: Both `Permissions.Modify` and `Sys.Modify` should be handled with
+care, as they allow modifying aspects of the system and its configuration that
+are dangerous or sensitive.
+
+WARNING: Carefully read the section about inheritance below to understand how
+assigned roles (and their privileges) are propagated along the ACL tree.
Objects and Paths
~~~~~~~~~~~~~~~~~
* Permissions for individual users always replace group permissions.
* Permissions for groups apply when the user is member of that group.
* Permissions on deeper levels replace those inherited from an upper level.
+* `NoAccess` cancels all other roles on a given path.
Additionally, privilege separated tokens can never have permissions on any
given path that their associated user does not have.
* `/vms/...`: requires 'VM.Allocate`
* `/pool/...`: requires 'Pool.Allocate`
+
-If the path is empty, `Permission.Modify` on `/access` is required.
+If the path is empty, `Permissions.Modify` on `/access` is required.
++
+If the user does not have the `Permissions.Modify` privilege, they can only
+delegate subsets of their own privileges on the given path (e.g., a user with
+`PVEVMAdmin` could assign `PVEVMUser`, but not `PVEAdmin`).
-Command Line Tool
+Command-line Tool
-----------------
Most users will simply use the GUI to manage users. But there is also
-a fully featured command line tool called `pveum` (short for ``**P**roxmox
-**VE** **U**ser **M**anager''). Please note that all Proxmox VE command
-line tools are wrappers around the API, so you can also access those
+a fully featured command-line tool called `pveum` (short for ``**P**roxmox
+**VE** **U**ser **M**anager''). Please note that all Proxmox VE command-line
+tools are wrappers around the API, so you can also access those
functions through the REST API.
Here are some simple usage examples. To show help, type: