Übungsaufgaben zu C

Übungen zur grundlegenden Ein-/Ausgabe

  1. Schreiben Sie ein Programm, welches folgende Ausgabe erzeugt:
    
        Hallo Welt !!!
    
    
  2. Schreiben Sie ein Programm, welches folgenden Dialog erzeugt:
    Geben Sie eine Zahl ein:   37
    
    Sie haben die Zahl 37 eingegeben.
    

Übungen zu Datentypen und Variablen

Speicherplatz von Variablen und Datentypen

Schreiben Sie ein Programm, welches die Speichergrösse folgender Datentypen ausgibt: char, short int, int, long int, float, double, long double

Übungen zu Zeigern

Verkettete Liste

Erzeugen sie eine Struktur ListElement mit den Attributen next und wert. wert hat den Typ int. Erzeugen sie aus Objekten dieser Struktur eine einfache Liste. Der next-Zeiger des letzten Elementes zeigt auf Null.

   _____________________
  | ListElement * next  |
  | int           wert  |
  |_____________________|

Erzeugen sie eine zusammenhängende Liste mit drei Elementen. Geben sie diese aus und löschen sie anschließend diese Liste

         ________     ________     ________
 start->|next: ----->|next: ----->|next: ----->Null
        |________|   |________|   |________|
        |wert: 1 |   |wert: 1 |   |wert: 1 |
        |________|   |________|   |________|

SASL

Auf dem Server

In /etc/openldap/slapd.conf die Einträge für den SASL-Server und das Mapping von SASL-Namen auf DNs definieren. Für das Digest-MD5-Verfahren muß im LDAP-Server das Klartext-Passwort hinterlegt sein.

sasl-host localhost
sasl-regexp
        uid=(.*),cn=digest-md5,cn=auth
        ldap:///ou=people,dc=example,dc=com??sub?(uid=$1)
password-hash {CLEARTEXT}
Auf dem Client

Die Datei /etc/saslauthd.conf erstellen:

ldap-servers: ldap://ldap.example.com
ldap_search_base: dc=example,dc=com

in /etc/init.d/saslauthd das Runlevel-Skript anpassen. Bsp.(SuSE 9.2):

start)
echo -n "Starting service saslauthd"
/sbin/startproc $AUTHD_BIN -a $SASLAUTHD_AUTHMECH \
 -O /etc/saslauthd.conf > /dev/null 2>&1

Bei SuSE in der Datei /etc/sysconfig/saslauthd SASLAUTHD_AUTHMECH=ldap eintragen. Den saslauthd starten (rcsaslauthd start) und in den Runleveln verankern (insserv saslauthd).

TLS

Für TLS wird mit openssl im ersten Schritt ein selbstsigniertes Zertifikat der Zertifizierungsstelle erzeugt. Dann wird das Key-Paar für den Server und ein Certification-Signing-Request erstellt. Im dritten Schritt wird ein von der Zertifizierungsstelle unterschriebenes Server-Zertifikat erstellt.

Wichtig ist bei den Angaben, die abgefragt werden, für das Server-Certification-Signing-Request beim Common Name (cn) den FQDN des Servers einzutragen! Ansonsten wird das Zertifikat später von den Clients nicht akzeptiert.

ldap1:/ # cd /etc/openldap/
ldap1:/etc/openldap # openssl req -x509 -newkey \
  rsa:1024 -keyout ldapCA.key -out ldapCA.crt
ldap1:/etc/openldap # openssl req -new -nodes \
  -keyout ldapServer.key -out ldapServer.csr
ldap1:/etc/openldap # openssl x509 -req -days 365 \
  -in ldapServer.csr -CA ldapCA.crt -CAkey ldapCA.key \
  -CAcreateserial -out ldapServer.crt

Auf dem Server wird in der /etc/openldap/slapd.conf der Server-Key, das Server-Zertifikat und das Zertifikat der CA (zur Überprüfung von Client-Zertifikaten) bekannt gemacht.

TLSCertificateFile /etc/openldap/ldapServer.crt
TLSCertificateKeyFile /etc/openldap/ldapServer.key
TLSCACertificateFile /etc/openldap/ldapCA.crt

# Client darf sich mit Zertifikat ausweisen
TLSVerifyClient allow

Auf dem Client wird das Zertifikat der Zertifizierungsstelle (CA) kopiert. Dann wird in der Datei /etc/openldap/ldap.conf der Pfad zum Zertifikat der CA eingetragen. Der Client verlangt vom Server sich mit einem gültigen Zertifikat auszuweisen.

TLS_REQCERT demand
TLS_CACERT /etc/openldap/ldapCA.crt