Aufgabe5

“set UID bit” & Co

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Aufgabe5
printdir ist nun auch fertig.
War eigentlich einfach, hat aber Spaß gemacht.
Jetzt muss nur das Abgabeprogramm richtig funktionieren :þ

In wie fern sind diese Bits denn für die Aufgabe wichtig?
Wenn ja, wie sollen die einzelnen Bits dargestellt werden.

man 2 lstat S_ISUID 0004000 set UID bit S_ISGID 0002000 set-group-ID bit (see below) S_ISVTX 0001000 sticky bit (see below)

Warum gibt’s kein S_ISSOCK auf den Ciprechnern?

Und wie checke ich für eine bestimmte Revision ein?

17:28:26 [~/codes/c/aufgabe5] co -l -r3 ./printdir.c ./RCS/printdir.c,v --> ./printdir.c revision 3.5 (locked) done 17:28:33 [~/codes/c/aufgabe5] vi printdir.c 17:29:28 [~/codes/c/aufgabe5] ci -r3 ./printdir.c ./RCS/printdir.c,v <-- ./printdir.c ci: ./RCS/printdir.c,v: revision 3.1 too low; must be higher than 4.2 17:29:37 [~/codes/c/aufgabe5] ci -r3.5 ./printdir.c ./RCS/printdir.c,v <-- ./printdir.c ci: ./RCS/printdir.c,v: revision 3.5 too low; must be higher than 4.2 17:29:44 [~/codes/c/aufgabe5] ci -r3.6 ./printdir.c ./RCS/printdir.c,v <-- ./printdir.c ci: ./RCS/printdir.c,v: revision 3.6 too low; must be higher than 4.2 17:29:47 [~/codes/c/aufgabe5]
Wie mach ich es richtig?


SUID und SGID werden jeweils mit einem s beim user bzw. der Gruppe dargestellt an Stelle des x. Falls x gleichzeitig gesetzt ist mit einem kleinen s, wenn x nicht gesetzt ist mit einem grossen S. Analog das Sticky Bit (VTX) an Stelle des x bei others, nur hier mit einem t/T anstatt eines s/S.
Genaueres dazu in der entsprechenden Tafeluebung.
Vielleicht noch ein kleines Beispiel:

mikey@lucifer[tmp] chmod 7777 test
mikey@lucifer[tmp] ls -l test
-rwsrwsrwt 1 mikey users 0 2006-06-04 18:25 test
mikey@lucifer[tmp] chmod 7644 test
mikey@lucifer[tmp] ls -l test
-rwSr-Sr-T 1 mikey users 0 2006-06-04 18:25 test
mikey@lucifer[tmp] chmod 4655 test
mikey@lucifer[tmp] ls -l test
-rwSr-xr-x 1 mikey users 0 2006-06-04 18:25 test

Sockets sind nicht in POSIX.1 enthalten, siehe dazu die CONFORMING TO section in lstat(2). Sind fuer die Aufgabe auch nicht notwendig.

Die Frage ist, was Du vor hast. Grundsaetzlich bewirkt ein
ci dateiname ohne Parameter das einchecken mit der naechsten logisch folgenden Version, also bei 4.2 zB 4.3. Eine explizite Angabe ist idR nur noetig wenn Du das Release erhoehen willst. Zu alten Releases kannst Du nur branchen, was RCS auch automatisch macht wenn Du eine aeltere Version neu einchecken willst, in Deinem Beispiel also 3.5. Daraus wuerde dann 3.5.1.1 werden. Wie gesagt wenn Du die Parameter weglaesst bzw nicht mit versionsnummern fuetterst macht ci das automatisch.


Zwei kleine Fragen zum aktuellen Aufgabenblatt:

  1. Soll bei Aufgabe c) für Links das Änderungsdatum des Links verwendet werden oder das Änderungsdatum der Datei, auf die der Link verweist? Ist wahrscheinlich unwichtig, aber ich frage halt mal.

  2. Wenn ich bei Aufgabe d) [m]lstat()[/m] verwende, gibt er mir als Dateigröße nicht wie im Beispiel auf dem Aufgabenblatt die Länge der Datei, auf die verwiesen wird, sondern die Größe des Links. Verwende ich stattdessen [m]stat()[/m], zeigt er mir die richtige Größe an, aber er kennzeichnet den Eintrag nicht mehr als Link.
    Wenn es so aussehen soll wie im Beispiel, müsste man also erst [m]lstat()[/m] aufrufen, und wenn es sich um einen Link handelt, ein [m]stat()[/m] hinterherschicken. Aber ist das wirklich notwendig? :vogel:

Nachtrag: Einer ersten inoffiziellen Stellungnahme eines Übungsleiters zufolge ist es anscheinend ziemlich egal.