cap_fcntls_limit(2)

cap_fcntls_limit2

Manage allowed fcntl commands

Usage

#include <sys/capsicum.h>

int

cap_fcntls_limit(int fd, uint32_t fcntlrights);

int

cap_fcntls_get(int fd, uint32_t *fcntlrightsp);

Library

Standard C Library (libc, -lc)

Overview

If a file descriptor is granted the CAP_FCNTL capability right, the list of allowed fcntl(2) commands can be selectively reduced (but never expanded) with the cap_fcntls_limit() system call.

A bitmask of allowed fcntls commands for a given file descriptor can be obtained with the cap_fcntls_get() system call.

Flags

The following flags may be specified in the fcntlrights argument or returned in the fcntlrightsp argument:

CAP_FCNTL_GETFL

Permit F_GETFL command.

CAP_FCNTL_SETFL

Permit F_SETFL command.

CAP_FCNTL_GETOWN

Permit F_GETOWN command.

CAP_FCNTL_SETOWN

Permit F_SETOWN command.

Return values

The cap_fcntls_limit() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

Errors

cap_fcntls_limit() succeeds unless:

[EBADF]

The fd argument is not a valid descriptor.

[EINVAL]

An invalid flag has been passed in fcntlrights.

[ENOTCAPABLE]

fcntlrights would expand the list of allowed fcntl(2) commands.

cap_fcntls_get() succeeds unless:

[EBADF]

The fd argument is not a valid descriptor.

[EFAULT]

The fcntlrightsp argument points at an invalid address.

[ENOSYS]

The running kernel was compiled without options CAPABILITY_MODE.

Releases

30 releases since FreeBSD 10.0-RELEASE; the text changed 16 times.

  1. 10.0
  2. 10.1
  3. 10.2
  4. 10.3
  5. 10.4
  6. 11.0
  7. 11.1
  8. 11.2
  9. 11.3
  10. 11.4
  11. 12.0
  12. 12.1
  13. 12.2
  14. 12.3
  15. 12.4
  16. 13.0–13.2
  17. 13.3–16.0

History

The cap_fcntls_get() and cap_fcntls_limit() system calls first appeared in FreeBSD 8.3. Support for capabilities and capabilities mode was developed as part of the TrustedBSD Project.

Authors

This function was created by Pawel Jakub Dawidek ⟨[email protected]⟩ under sponsorship of the FreeBSD Foundation.

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.