---
name: "keyctl_chown"
section: "3"
platform: "linux"
package: "keyutils"
version: "1.6.3-4"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/keyctl_chown"
---

# keyctl\_chown(3)

change the ownership of a key

## NAME

keyctl\_chown - change the ownership of a key

## SYNOPSIS

```
#include <keyutils.h>

long keyctl_chown(key_serial_t key, uid_t uid, gid_t gid);
```

## DESCRIPTION

**keyctl\_chown**() changes the user and group ownership details of a key.

A setting of **-1** on either *uid* or *gid* will cause that setting to be ignored.

A process that does not have the **SysAdmin** capability may not change a key's UID or set the key's GID to a value that does not match the process's GID or one of its group list.

The caller must have **setattr** permission on a key to be able to change its ownership.

## RETURN VALUE

On success **keyctl\_chown**() returns **0 .** On error, the value **-1** will be returned and *errno* will have been set to an appropriate error.

## ERRORS

- **ENOKEY**

  The specified key does not exist.

- **EKEYEXPIRED**

  The specified key has expired.

- **EKEYREVOKED**

  The specified key has been revoked.

- **EDQUOT**

  Changing the UID to the one specified would run that UID out of quota.

- **EACCES**

  The key exists, but does not grant **setattr** permission to the calling process.

## LINKING

This is a library function that can be found in *libkeyutils*. When linking, **-lkeyutils** should be specified to the linker.

## SEE ALSO

[**keyctl**(1)](/keyctl/1.md), [**add\_key**(2)](/add_key/2.md), [**keyctl**(2)](/keyctl/2.md), [**request\_key**(2)](/request_key/2.md), [**keyctl**(3)](/keyctl/3.md), [**keyrings**(7)](/keyrings/7.md), [**keyutils**(7)](/keyutils/7.md)
