GETPEEREID(3) | Library Functions Manual | GETPEEREID(3)

# NAME

`getpeereid` — get effective user and group identification of locally-connected peer

# SYNOPSIS

`#include <sys/types.h>`
`#include <sys/socket.h>`

int
`getpeereid`(int s, uid_t *euid, gid_t *egid);

# DESCRIPTION

`getpeereid`() returns the effective user ID and group ID of the peer connected to a UNIX-domain socket (see unix(4)). The argument s must be of type `SOCK_STREAM` or `SOCK_SEQPACKET`.

One common use is for UNIX-domain servers to determine the credentials of clients that have connected to it.

`getpeereid`() takes three parameters:

- s contains the file descriptor of the socket whose peer credentials should be looked up.
- euid points to a uid_t variable into which the effective user ID for the connected peer will be stored.
- egid points to a gid_t variable into which the effective group ID for the connected peer will be stored.

# RETURN VALUES

If the call succeeds, a 0 is returned and euid and egid are set to the effective user ID and group ID of the connected peer. Otherwise, errno is set and a value of -1 is returned.

# ERRORS

On failure, errno is set to one of the following:

[`EBADF`]
  The argument s is not a valid descriptor.
[`ENOTSOCK`]
  The argument s is a file, not a socket.
[`EOPNOTSUPP`]
  The socket is not in the UNIX-domain.
[`ENOTCONN`]
  The socket is not connected.
[`ENOBUFS`]
  Insufficient resources were available in the system to perform the operation.

# SEE ALSO

accept(2), bind(2), getpeername(2), getsockname(2), getsockopt(2), socket(2), unix(4)

# HISTORY

The `getpeereid`() function call appeared in OpenBSD 3.0.

September 11, 2022 | Debian