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:
USER
bzw. LOGNAME
) und PasswortHOME
)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 timeval | ut_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) |