Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung


'Wie werde ich Unix-Guru' als Buch bestellen
A. Willemer
Wie werde ich UNIX-Guru
I  ANWENDUNG
Know-How für Unix/Linux-User: Einführung, Shell, Befehle, Hilfe, Arbeit mit Dateien, Editoren, Reguläre Ausdrücke, nützliche Tools, Hardware.

II  ADMINISTRATION
Tools, Systemstart, Benutzer verwalten, Hardware konfigurieren, Software installieren, Datensicherung, Tuning, Kernel

III  NETZWERK
Client/Server Systeme, TCP/IP, Routing, IPv6, Internet-Dienste, DHCP, Webserver, Firewalls

IV  DAS X-WINDOW SYSTEM
Die grafische Oberfläche von UNIX einrichten und nutzen

V  PROGRAMMIERUNG VON SHELLSKRIPTEN
Automatisieren von Tasks durch Shell-Skripte.

VI  PERL
Interpreter, Syntax, Variablen, Steuerung, Funktionen, UNIX-Aufrufe, GUIs mit Tk

VII  PROGRAMMIERWERKZEUGE
C-Compiler, Analyse-Tools, CVS, yacc, diff

VIII  UNIX-SYSTEMAUFRUFE
UNIX-Befehle in eigenen Programmen nutzen

IX  LITERATUR
Weiterführende Literatur zu UNIX und LINUX

 
Galileo Computing / <openbook> / "Wie werde ich UNIX-Guru ?"
« Auslesen der Passwortdatei Benutzer und Gruppen Grundlagen der Dämonisierung »

Gruppen

Analog funktioniert das Auslesen der Gruppendatei. Auch hier gibt es eine Struktur, die nach der Datei benannt ist.

struct group {
    char    *gr_name;   /* Gruppenname */
    char    *gr_passwd; /* Gruppenpasswort */
    gid_t   gr_gid;     /* Gruppen-id */
    char    **gr_mem;   /* Gruppenmitglieder */
};

Die Gruppenmitglieder befinden sich im Strukturelement gr_mem. Das ist ein Array von Strings. Das letzte Element des Arrays hat den Wert NULL. Auch hier gibt es Funktionen um anhand der ID oder des Namens den entsprechenden Eintrag zu finden. Sie heißen getgrnam() und getgrgid().

#include <grp.h>
#include <sys/types.h>
struct group *getgrnam(const char *name);
struct group *getgrgid(gid_t gid);

Auch das Auslesen der group-Datei läuft auf diese Weise:

#include <grp.h>
#include <sys/types.h>
struct group *getgrent(void);
void setgrent(void);
void endgrent(void);

Das folgende Beispiel liest die /etc/group aus und listet für jede Gruppe die Mitglieder auf.

[Auslesen der Gruppen und ihrer Mitglieder]
#include <grp.h>

int main()
{
struct group *grp;
char *member;
int i;

setgrent();
   while ( grp = getgrent()) {
      puts(grp->gr_name);
      i = 0;
      member = grp->gr_mem[i++];
      while (member) {
          puts(member);
          member = grp->gr_mem[i++];
      }
      puts("--------");

}
   endgrent();
}

Ein Prozess kann mit der Funktion getgroups() ermitteln, in welchen Gruppen er angemeldet ist. Dazu bekommt er als Antwort ein Array mit den Group-IDs. Im Beispiel sollen mit Hilfe der Funktion getgrgid() die Nummern der Gruppen, zu denen der Aufrufer gehört und dann der zugehörige Name der Gruppe festgestellt werden und so eine Liste auf dem Bildschirm ausgegeben werden.

[mygroups]
#include <grp.h>
#include <limits.h>
#include <sys/types.h>

int main()
{
gid_t grplist[NGROUPS_MAX];
struct group *grp;
char *member;
int i, anzGruppen;

anzGruppen = getgroups(NGROUPS_MAX, grplist);
   for (i=0; i<anzGruppen; i++) {
      grp = getgrgid(grplist[i]);
      puts(grp->gr_name);
   }
}



« Auslesen der Passwortdatei | Benutzer und Gruppen | Grundlagen der Dämonisierung »
 
 Zum Katalog
Zum Katalog
Wie werde ich UNIX-Guru?
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 UNIX/Linux

PHP 4-Workshop

Einstieg in Python

Perl fürs Web

MySQL 4

GNOME 2.0
 Empfehlung

Einstieg in XML
 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
Info

 MyGalileo
Der Service für registrierte Leser:
Zu MyGalileo
Info



Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de