---
name: "KEYCTL_GET_SECURITY"
section: "2const"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/KEYCTL_GET_SECURITY"
---

# KEYCTL\_GET\_SECURITY(2const)

manipulate the kernel's key management facility

## NAME

KEYCTL\_GET\_SECURITY - manipulate the kernel's key management facility

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#include <linux/keyctl.h>  /* Definition of KEY* constants */
#include <sys/syscall.h>   /* Definition of SYS_* constants */
#include <unistd.h>
```

**long syscall(**size\_t n;              **SYS\_keyctl, KEYCTL\_GET\_SECURITY, key\_serial\_t** *key***,**              **char** *buf***\[\_Nullable** *n***\], size\_t** *n***);**

## DESCRIPTION

- **KEYCTL\_GET\_SECURITY** (since Linux 2.6.26)

  Get the LSM (Linux Security Module) security label of the specified key.

The ID of the key whose security label is to be fetched is specified in *key*. The security label (terminated by a null byte) will be placed in the buffer pointed to by *buf* argument; the size of the buffer must be provided in *n*.

If *buf* is specified as NULL or the buffer size specified in *n* is too small, the full size of the security label string (including the terminating null byte) is returned as the function result, and nothing is copied to the buffer.

The caller must have *view* permission on the specified key.

The returned security label string will be rendered in a form appropriate to the LSM in force. For example, with SELinux, it may look like:

```
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
```

If no LSM is currently in force, then an empty string is placed in the buffer.

## RETURN VALUE

On success, the size of the LSM security label string (including the terminating null byte), irrespective of the provided buffer size.

On error, -1 is returned, and *errno* is set to indicate the error.

## VERSIONS

A wrapper is provided in the *libkeyutils* library: [**keyctl\_get\_security**(3)](/keyctl_get_security/3.md).

## STANDARDS

Linux.

## HISTORY

Linux 2.6.26.

## SEE ALSO

[**keyctl**(2)](/keyctl/2.md), [**keyctl\_get\_security**(3)](/keyctl_get_security/3.md), [**keyctl\_get\_security\_alloc**(3)](/keyctl_get_security_alloc/3.md)
