1. Index
  2. Shell
  3. C
  4. POSIX
  5. JavaScript

Benutzer- und Gruppen

Der Benutzer ist ein künstliches Konstrukt, um Besitzrechte von Dateien und Zugriffsrechte von Prozessen zu verwalten. Traditionell werden Benutzer in /etc/passwd und Gruppen in /etc/group gespeichert. NSS und PAM abstrahieren diverse Datei-, Datenbank- und Netzwerk-gestützte Backends. Zu einem Benutzer gehören:

unistd.h

Rechte setzen

typedef uid_t int Benutzernummer
typedef gid_t int Gruppennummer
Benutzer
char * getlogin (void) Besitzer des Terminals
int getlogin_r (char * buf, size_t size) Benutzernamen in Puffer schreiben
uid_t getuid (void) Besitzer des Prozesses
gid_t getgid (void) Gruppe des Prozesses
uid_t geteuid (void) Effektiver Benutzer
gid_t getegid (void) Effektive Gruppe
int getresuid (uid_t * ruid, uid_t * euid, uid_t * suid) Liefert alle relevanten Benutzer
int getresgid (gid_t * rgid, gid_t * egid, gid_t * sgid) Liefert alle relevanten Gruppen
Berechtigungen
int setuid (uid_t uid) Ändert effektiven und (wenn root) realen Benutzer
int setgid (gid_t gid) Ändert effektive und (wenn root) reale Gruppe
int seteuid (uid_t euid) Ändert nur den effektiven Benutzer
int setegid (gid_t egid) Ändert nur die effektive Gruppe
int setreuid (uid_t ruid, uid_t euid) Ändert realen und effektiven Benutzer
int setregid (gid_t rgid, gid_t egid) Ändert reale und effektive Gruppe
int setresuid (uid_t ruid, uid_t euid, uid_t suid) Ändert alle Benutzer auf einmal
int setresgid (gid_t rgid, gid_t egid, gid_t sgid) Ändert alle Gruppen auf einmal

pwd.h

Benutzerdatenbank

struct passwd
char * pw_name Benutzername
char * pw_passwd Passwort
uid_t pw_uid Benutzernummer
gid_t pw_gid Primäre Gruppe
char * pw_gecos Vor- und Nachname
char * pw_dir Benutzerverzeichnis
char * pw_shell Pfad der Shell
void setpwent (void) Öffnet die Benutzerdatenbank
void endpwent (void) Schließt die Benutzerdatenbank
struct passwd * getpwent (void) Liest nächsten Eintrag
struct passwd * getpwnam (const char * name) Liest Benutzer anhand des Namens
struct passwd * getpwuid (uid_t uid) Liest Benutzer anhand der Nummer
int getpwnam_r (const char * name, struct passwd * pwbuf, char * buf, size_t len, struct passwd ** pwbufp)
int getpwuid_r (uid_t uid, struct passwd * pwbuf, char * buf, size_t len, struct passwd ** pwbufp)
int getpwent_r ( struct passwd * pwbuf, char * buf, size_t len, struct passwd ** pwbufp)
int fgetpwent_r (FILE * stream, struct passwd * pwbuf, char * buf, size_t len, struct passwd ** pwbufp)
struct passwd * fgetpwent (FILE * stream)
int putpwent (const struct passwd * pwbuf, FILE * stream)
int getpw (uid_t uid, char * buf)

grp.h

Gruppendatenbank

struct group
char * gr_name Gruppenname
char * gr_passwd Passwort
gid_t gr_gid Nummer
char ** gr_mem Liste der Benutzernamen
void setgrent (void) Öffnet die Gruppendatenbank
void endgrent (void) Schließt die Gruppendatenbank
struct group * getgrnam (const char * name) Liest Gruppe anhand des Namens
struct group * getgrgid (gid_t group) Liest Gruppe anhand der Nummer
struct group * getgrent (void) Liest nächsten Eintrag
int getgrnam_r (const char * name, struct group * gbuf, char * buf, size_t len, struct group ** gbufp)
int getgrgid_r (gid_t group, struct group * gbuf, char * buf, size_t len, struct group ** gbufp)
int getgrent_r ( struct group * gbuf, char * buf, size_t len, struct group ** gbufp)
int fgetgrent_r (FILE * stream, struct group * gbuf, char * buf, size_t len, struct group ** gbufp)
struct group * fgetgrent (FILE * stream)
int initgroups (const char * user, gid_t group)
int getgrouplist (const char * user, gid_t group, gid_t * groups, int * ngroups)
int getgroups (size_t size, gid_t * groups)
int setgroups (size_t size, const gid_t * groups)

shadow.h

Passwortdatenbank

struct spwd
char * sp_namp Benutzername
char * sp_pwdp Streuwert des Passworts, siehe crypt
long sp_lstchg Änderungsdatum (Tage seit der Epoche)
long sp_min Minimum Tage bis zur nächsten Änderung
long sp_max Maximum Tage bis zur nächsten Änderung
long sp_warn Anzahl Tage bis zur Ablaufwarnung
long sp_inact Anzahl Tage bis zur Kontosperrung
long sp_expire Datum der Kontosperrung
unsigned long sp_flag Reserviert
void setspent (void) Öffnet die Schattendatenbank
void endspent (void) Schließt die Schattendatenbank
struct spwd * getspent (void) Liest nächsten Eintrag
struct spwd * fgetspent (FILE * fp) Liest nächsten Datensatz aus Datei
struct spwd * sgetspent (const char * s) Liest Datensatz aus Zeichenkette
struct spwd * getspnam (const char * name) Liefert Datensatz zum Benutzernamen
int putspent (const struct spwd * p, FILE * fp) Schreibt Datensatz in Datei
int lckpwdf (void) Sperrt die Schattendatenbank
int ulckpwdf (void) Entsperrt die Schattendatenbank
int getspent_r ( struct spwd * spbuf, char * buf, size_t buflen, struct spwd ** spbufp)
int getspnam_r (const char * name, struct spwd * spbuf, char * buf, size_t buflen, struct spwd ** spbufp)
int fgetspent_r (FILE * fp, struct spwd * spbuf, char * buf, size_t buflen, struct spwd ** spbufp)
int sgetspent_r (const char * s, struct spwd * spbuf, char * buf, size_t buflen, struct spwd ** spbufp)

utmpx.h

Das System protokolliert An- und Abmeldungen von Benutzern in /var/log/wtmp.

struct utmpx
char ut_user[] Benutzername
char ut_id[] Initialisierungsprozess
char ut_line[] Gerätename
pid_t ut_pid Prozessnummer
short ut_type Typ
struct timevalut_tv Zeitpunkt des Eintrags
void setutxent (void)
void endutxent (void)
struct utmpx * getutxent (void)
struct utmpx * getutxid (const struct utmpx * ut)
struct utmpx * getutxline (const struct utmpx * ut)
struct utmpx * pututxline (const struct utmpx * ut)