1# Rights 2 3## Basics 4 5Rights are associated with handles and convey privileges to perform actions on 6either the associated handle or the object associated with the handle. 7 8The [`<zircon/rights.h>`](../system/public/zircon/rights.h) header defines 9default rights for each object type, which can be reduced via 10`zx_handle_replace()` or `zx_handle_duplicate()`. 11 12| Right | Conferred Privileges | 13| ----- | -------------------- | 14| **ZX_RIGHT_DUPLICATE** | Allows handle duplication via [*zx_handle_duplicate*](syscalls/handle_duplicate.md) | 15| **ZX_RIGHT_TRANSFER** | Allows handle transfer via [*zx_channel_write*](syscalls/channel_write.md) | 16| **ZX_RIGHT_READ** | **TO BE REMOVED** Allows inspection of object state | 17| | Allows reading of data from containers (channels, sockets, VM objects, etc) | 18| | Allows mapping as readable if **ZX_RIGHT_MAP** is also present | 19| **ZX_RIGHT_WRITE** | **TO BE REMOVED** Allows modification of object state | 20| | Allows writing of data to containers (channels, sockets, VM objects, etc) | 21| | Allows mapping as writeable if **ZX_RIGHT_MAP** is also present | 22| **ZX_RIGHT_EXECUTE** | Allows mapping as executable if **ZX_RIGHT_MAP** is also present | 23| **ZX_RIGHT_MAP** | Allows mapping of a VM object into an address space. | 24| **ZX_RIGHT_GET_PROPERTY** | Allows property inspection via [*zx_object_get_property*](syscalls/object_get_property.md) | 25| **ZX_RIGHT_SET_PROPERTY** | Allows property modification via [*zx_object_set_property*](syscalls/object_set_property.md) | 26| **ZX_RIGHT_ENUMERATE** | Allows enumerating child objects via [*zx_object_get_info*](syscalls/object_get_info.md) and [*zx_object_get_child*](syscalls/object_get_child.md) | 27| **ZX_RIGHT_DESTROY** | Allows termination of task objects via [*zx_task_kill*](syscalls/task_kill.md)| 28| **ZX_RIGHT_SET_POLICY** | Allows policy modification via [*zx_job_set_policy*](syscalls/job_set_policy.md)| 29| **ZX_RIGHT_GET_POLICY** | Allows policy inspection via [*zx_job_get_policy*](syscalls/job_get_policy.md)| 30| **ZX_RIGHT_SIGNAL** | Allows use of [*zx_object_signal*](syscalls/object_signal.md) | 31| **ZX_RIGHT_SIGNAL_PEER** | Allows use of [*zx_object_signal_peer*](syscalls/object_signal.md) | 32| **ZX_RIGHT_WAIT** | Allows use of [*zx_object_wait_one*](syscalls/object_wait_one.md), [*zx_object_wait_many*](syscalls/object_wait_many.md), and other waiting primitives | 33| **ZX_RIGHT_INSPECT** | Allows inspection via [*zx_object_get_info*](syscalls/object_get_info.md) | 34| **ZX_RIGHT_MANAGE_JOB** | **NOT YET IMPLEMENTED** Allows creation of processes, subjobs, etc. | 35| **ZX_RIGHT_MANAGE_PROCESS** | **NOT YET IMPLEMENTED** Allows creation of threads, etc | 36| **ZX_RIGHT_MANAGE_THREAD** | **NOT YET IMPLEMENTED** Allows suspending/resuming threads, etc| 37 38## ZX_RIGHTS_BASIC 39 40The basic rights allow primitive manipulation of handles and are common to the 41majority of handle types by default. These are *ZX_RIGHT_DUPLICATE*, 42*ZX_RIGHT_TRANSFER*, *ZX_RIGHT_WAIT*, and *ZX_RIGHT_INSPECT*. 43 44These four rights are referred to as *ZX_RIGHTS_BASIC* when used together. 45 46## See also 47[Objects](objects.md), 48[Handles](handles.md) 49