Thus spake Excalibur:
> keiner zwingt dich zu antworten !
Das ist korrekt.
> und ich denke kein Meister ist vom Himmel gefallen ausser Dir
> natürlich !?
Sehr sinnvoll. Machst Du die Leute die Dir helfen wollen immer bloed
an?
> also wenn du Hilfe anbieten willst , dann bedenke es gibt noch dumme
> unerfahrene linux anfänger...
Ich habe Dir Hinweise gegeben, ich habe Dir gesagt wo Du nachlesen
kann und ich habe Dir Gegenfragen gestellt um Dir helfen zu koennen.
Was soll ich denn noch machen?
> also formuliere deine antworten etwas sachlicher,verständlicher und
Aha. Also dann sachlicher.
Um Zugriffsrechte einer existierenden Datei zu aendern, stehen die
Funktionen "chmod" und "fchmod" zur Verfuegung. Mit "fchmod" kannst Du
nur die Zugriffsreche einer bereits geoeffneten Datei (Filedescriptor
fd) aendern, waehrend das mit "chmod" fuer eine noch nicht geoeffnete
Datei nicht moeglich.
Als Modes stehen die in <sys/stat.h> definierten Konstanten zur
Verfuegung:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#define S_IRWXU 0000700 /* RWX mask for owner */
#define S_IRUSR 0000400 /* R for owner */
#define S_IWUSR 0000200 /* W for owner */
#define S_IXUSR 0000100 /* X for owner */
#define S_IRWXG 0000070 /* RWX mask for group */
#define S_IRGRP 0000040 /* R for group */
#define S_IWGRP 0000020 /* W for group */
#define S_IXGRP 0000010 /* X for group */
#define S_IRWXO 0000007 /* RWX mask for other */
#define S_IROTH 0000004 /* R for other */
#define S_IWOTH 0000002 /* W for other */
#define S_IXOTH 0000001 /* X for other */
#define S_ISUID 0004000 /* set user id on execution */
#define S_ISGID 0002000 /* set group id on execution */
#define S_ISVTX 0001000 /* save swapped text even after use */
|
wobei "fchmod" und die Konstante S_ISVTX _nicht_ Bestandteil von
POSIX.1 sind, aber abgearbeitet werden.
Damit Du jetzt die Rechte aendern kannst, muss die EUID des Prozesses
gleich der UID des Dateieigentuemers sein oder root - Rechte (UID == 0)
haben und dafuer hat man das S-Bit (S_ISVTX), aber das hab ich Dir ja
auch schon erklaert, aber ich bin ja flexibel und mir ist langweilig
(meine Langeweile kann auch toedlich sein; nochmal Glueck gehabt).
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
[sstrwxrwxrwx] Rechte fuer Dateien
||||||||||||
|||||||||||`- Andere duerfen ausfuehren
||||||||||`-- Andere duerfen schreiben
|||||||||`--- Andere duerfen lesen
||||||||`---- Mitglieder der Gruppe duerfen ausfuehren
|||||||`----- Mitglieder der Gruppe duerfen schreiben
||||||`------ Mitglieder der Gruppe duerfen lesen
|||||`------- Eigentuemer darf ausfuehren
||||`-------- Eigentuemer darf schreiben
|||`--------- Eigentuemer darf lesen
||`---------- Programm gleich ausswappen (obsolete(?))
|`----------- Programm wird unter dieser Gruppe gestartet
`------------ Programm wird unter diesem Nutzer gestartet
[sstrwxrwxrwx] Rechte fuer Verzeichnisse
||||||||||||
|||||||||||`- Andere duerfen auf Subdirectorys / Dateien zugreifen
||||||||||`-- Andere duerfen Subdirectorys / Dateien anlegen / loeschen
|||||||||`--- Andere duerfen listen
||||||||`---- Mitglieder der Gruppe duerfen auf Subdirectorys / Dateien zugreifen
|||||||`----- Mitglieder der Gruppe duerfen Subdirectorys / Dateien anlegen / loeschen
||||||`------ Mitglieder der Gruppe duerfen listen
|||||`------- Eigentuemer darf auf Subdirectorys / Dateien zugreifen
||||`-------- Eigentuemer darf Subdirectorys / Dateien anlegen / loeschen
|||`--------- Eigentuemer darf listen
||`---------- Nur der Eigentuemer eine(r|s) Datei / Directorys darf diese loeschen.
|`----------- Neue Subdirectorys / Dateien bekommen gleiche Gruppe wir Directory.
`------------ unused
|
dasz rw-r-x-wx fuer eine Datei bedeutet, dasz der Besitzer lesen und
schreiben, aber nicht ausfuehren, Mitglieder der Dateigruppe lesen und
ausfuehren, aber nicht schreiben und alle anderen schreiben und ausfuehren
koennen.
So ist also
$ chmod u=rwx file
$ chmod 700 file
aequivalent (nur der Eigentuemer hat Zugriff auf die Datei und kann sie
lesen, schreiben und ausfuehren.
Du kannst die Rechte in oktaler und symbolischer Schreibweise vergeben:
Bei der oktalen Schreibweise ist jedem Rechte ein oktaler Wert
zugewiesen. Die einzelnen Werte kannst Du zu einer "Rechtemaske" addieren.
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
|
'4000' == Set-User-ID - Bit
'2000' == Set-Group-ID - Bit
'1000' == Sticky-Bit
'0400' == Leserecht fuer den Eigentuemer
'0200' == Schreibrecht fuer den Eigentuemer
'0100' == /Ausfuehrungsrecht/ fuer den eigentuemer
'0040' == Leserecht fuer die Gruppe
'0020' == Schreibrecht fuer die Gruppe
'0010' == /Ausfuehrungsrecht/ fuer die Gruppe
'0004' == Leserecht fuer alle
'0002' == Schreibrecht fuer alle
'0001' == /Ausfuehrungsrecht/ fuer alle
|
wobei man entweder eine Drei- oder vierstelige Zahl verwenden kann
('0400' == '400'). Man kann sie auch mischen, wobei dann '1' fuer
Ausfuehren, '2' fuer Schreiben und '4' fuer Lesen steht.
$ chmod 644 file
wuerde dann also allen Benutzern das Lesen und dem Eigentuemer
zusaetzlich noch das Beschreiben der Datei "file" erlauben.
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
|
'u' == User (Besitzer)
'g' == Group (Gruppe)
'o' == Others (Andere)
'a' == All (Alles (also 'u', 'g' und 'o')).
'+' == Rechte hinzufuegen
'-' == Rechte loeschen
'=' == Rechte festlegen
'r' == Read (Lese)
'w' == Write (Schreiben)
'x' == Execute (Ausfuehren)
's' == Sticky (EGID / EUID bei der Ausfuehrung wird geaendert).
|
Wenn Du das verstanden hast, liest die Manpages von
chflags(1), chgrp(1), find(1), install(1), chmod(2), stat(2),
umask(2), fts(3), setmode(3), symlink(7), chown(8) und
sticky(8).
Danach wirf das Oreilly - Buch weg und lies das Handbuch deiner
Distrubtion und eigne Dir erstmal die Grundlagen an bevor Du hier
rummotzt.
> wenn geht ohne ironischen beigeschmack.
Aso.
> chmod: Beim Setzen der Zugriffsrechte für »/bin/su«: Die Operation
> ist nicht erlaubt
Logisches Denken Teil 1. $USER darf das nicht. Wer koennte es sonst
noch duerfen?
> Dank dir und ich vergesse diese sache nun ....
Ich auch. Auf meine Hilfe kannst Du in Zukunft verzichten. Ich lasse
mich ungern von Leuten dumm anmachen denen ich helfen soll.