Übungsaufgaben zu C
Übungen zur grundlegenden Ein-/Ausgabe
- Schreiben Sie ein Programm, welches folgende Ausgabe erzeugt:
Hallo Welt !!!
- 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