DDI_CRED(9F) Kernel Functions for Drivers DDI_CRED(9F)
ddi_cred, crgetuid, crgetruid, crgetsuid, crgetgid, crgetrgid,
crgetsgid, crgetzoneid, crgetgroups, crgetngroups - access and change
parts of the cred_t structure
#include <sys/cred.h>
uid_t crgetuid(const cred_t *cr);
uid_t crgetruid(const cred_t *cr);
uid_t crgetsuid(const cred_t *cr);
gid_t crgetgid(const cred_t *cr);
gid_t crgetrgid(const cred_t *cr);
gid_t crgetsgid(const cred_t *cr);
zoneid_t crgetzoneid(const cred_t *cr);
const gid_t *crgetgroups(const cred_t *cr);
int crgetngroups(const cred_t *cr);
int crsetresuid(cred_t *cr, uid_t ruid, uid_t euid, uid_t suid);
int crsetresgid(cred_t *cr, gid_t rgid, gid_t egid, gid_t sgid);
int crsetugid(cred_t *cr, uid_t uid, gid_t gid);
int crsetgroups(cred_t *cr, int ngroups, gid_t gids);
illumos DDI specific (illumos DDI).
cr
pointer to the user credential structure
uid, ruid, euid, suid
new user id, real, effective and saved user
id
gid, rgid, egid, sgid
new group id, real, effective and saved
group id
ngroups
number of groups in the group array
gids
pointer to array of new groups
The user credential is a shared, read-only, ref-counted data
structure. Its actual size and layout are subject to change. The
functions described in this page allow the programmer to retrieve
fields from the structure and to initialize newly allocated
credential structures.
crgetuid(), crgetruid(), and crgetsuid() return, respectively, the
effective, real, and saved user id from the user credential pointed
to by cr.
crgetgid(), crgetrgid(), and crgetsgid() return, respectively, the
effective, real, and saved group id from the user credential pointed
to by cr.
crgetzoneid() returns the zone id from the user credential pointed to
by cr.
crgetgroups() returns the group list of the user credential pointed
to by cr.
crgetngroups() returns the number of groups in the user credential
pointed to by cr.
crsetresuid() sets the real, effective and saved user id. All but one
can be specified as -1, which causes the original value not to
change.
crsetresgid() sets the real, effective and saved group id. All but
one can be specified as -1, which causes the original value not to
change.
crsetugid() initializes the real, effective and saved user id all to
uid. It initializes the real, effective, and saved group id all to
gid.
crsetgroups() sets the number of groups in the user credential to
ngroups and copies the groups from gids to the user credential. If
ngroups is 0, gids need not point to valid storage.
It is an error to call this any of the crset*() functions on a user
credential structure that was newly allocated.
The crget*() functions return the requested information.
The crset*id() functions return 0 on success and -1 if any of the
specified ids are invalid. The functions might cause a system panic
if called on a user credential structure that is referenced by other
parts of the system.
These functions can be called from user and kernel contexts.
See attributes(7) for a description of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Architecture | All |
+--------------------+-----------------+
|Interface Stability | Committed |
+--------------------+-----------------+
attributes(7), privileges(7), drv_priv(9F)
Writing Device Drivers
August 6, 2003 DDI_CRED(9F)
NAME
ddi_cred, crgetuid, crgetruid, crgetsuid, crgetgid, crgetrgid,
crgetsgid, crgetzoneid, crgetgroups, crgetngroups - access and change
parts of the cred_t structure
SYNOPSIS
#include <sys/cred.h>
uid_t crgetuid(const cred_t *cr);
uid_t crgetruid(const cred_t *cr);
uid_t crgetsuid(const cred_t *cr);
gid_t crgetgid(const cred_t *cr);
gid_t crgetrgid(const cred_t *cr);
gid_t crgetsgid(const cred_t *cr);
zoneid_t crgetzoneid(const cred_t *cr);
const gid_t *crgetgroups(const cred_t *cr);
int crgetngroups(const cred_t *cr);
int crsetresuid(cred_t *cr, uid_t ruid, uid_t euid, uid_t suid);
int crsetresgid(cred_t *cr, gid_t rgid, gid_t egid, gid_t sgid);
int crsetugid(cred_t *cr, uid_t uid, gid_t gid);
int crsetgroups(cred_t *cr, int ngroups, gid_t gids);
INTERFACE LEVEL
illumos DDI specific (illumos DDI).
PARAMETERS
cr
pointer to the user credential structure
uid, ruid, euid, suid
new user id, real, effective and saved user
id
gid, rgid, egid, sgid
new group id, real, effective and saved
group id
ngroups
number of groups in the group array
gids
pointer to array of new groups
DESCRIPTION
The user credential is a shared, read-only, ref-counted data
structure. Its actual size and layout are subject to change. The
functions described in this page allow the programmer to retrieve
fields from the structure and to initialize newly allocated
credential structures.
crgetuid(), crgetruid(), and crgetsuid() return, respectively, the
effective, real, and saved user id from the user credential pointed
to by cr.
crgetgid(), crgetrgid(), and crgetsgid() return, respectively, the
effective, real, and saved group id from the user credential pointed
to by cr.
crgetzoneid() returns the zone id from the user credential pointed to
by cr.
crgetgroups() returns the group list of the user credential pointed
to by cr.
crgetngroups() returns the number of groups in the user credential
pointed to by cr.
crsetresuid() sets the real, effective and saved user id. All but one
can be specified as -1, which causes the original value not to
change.
crsetresgid() sets the real, effective and saved group id. All but
one can be specified as -1, which causes the original value not to
change.
crsetugid() initializes the real, effective and saved user id all to
uid. It initializes the real, effective, and saved group id all to
gid.
crsetgroups() sets the number of groups in the user credential to
ngroups and copies the groups from gids to the user credential. If
ngroups is 0, gids need not point to valid storage.
It is an error to call this any of the crset*() functions on a user
credential structure that was newly allocated.
RETURN VALUES
The crget*() functions return the requested information.
The crset*id() functions return 0 on success and -1 if any of the
specified ids are invalid. The functions might cause a system panic
if called on a user credential structure that is referenced by other
parts of the system.
CONTEXT
These functions can be called from user and kernel contexts.
ATTRIBUTES
See attributes(7) for a description of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Architecture | All |
+--------------------+-----------------+
|Interface Stability | Committed |
+--------------------+-----------------+
SEE ALSO
attributes(7), privileges(7), drv_priv(9F)
Writing Device Drivers
August 6, 2003 DDI_CRED(9F)