Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Stroke« (21.10.2004, 18:41)
Zitat
gentlich noch ein Linux-Noob bin könnte ich mit dem Root-User wahrscheinlich viel Mist bauen
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »CIU« (21.10.2004, 18:57)
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Stroke« (21.10.2004, 19:19)
Zitat
Original von Stroke
Okay, also ich habe jetzt die Rechte auf 750 gesetzt. Soweit ich weiß, bedeutet das ja, dass der besitzer alles darf, und gruppenmitglieder nur lesen und ausführen dürfen.
Dafür habe ich jetzt alle Dateien chown mir zugesprochen.
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
Um Zugriffsrechte einer bereits existierenden Datei zu aendern, stehen die beiden Funktionen "chmod" und "fchmod" zur Verfuegung. | #include <sys/types.h> | #include <sys/stat.h> | | int chmod(const char *pfad, mode_t modus); | int fchmod(int fd, mode_t modus); Waehrend mit "fchmod" nur die Zugriffsrechte einer bereits geoeffneten Datei (mit Filedeskriptor 'fd') geaendert werden koennen, ist das bei "chmod" fuer eine nicht geoeffnete Datei moeglich. Fuer »modus« sind eine oder mehrere mit '|' (bitweises OR) verknuepfte Konstanten anzugeben, die in <sys/stat.h> definiert sind. ,----[ <sys/stat.h> ] | #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 */ `---- Um die Zugriffsrechte fuer eine Datei zu aendern, muss die effektive User-ID des Prozesses gleich der User-ID des Dateieigentuemers sein oder der Prozess muss Superuser - Rechte haben. 'fchmod' ist _nicht_ Bestandteil von POSIX.1, wird aber sowohl von SVR4 als auch 4.4BSD angeboten. Die Konstante 'S_ISVTX' ist ebenfalls _nicht_ Bestandteil von POSIX.1. ,----[ Rechte fuer Dateien ] | [sstrwxrwxrwx] | |||||||||||| | |||||||||||`- 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 `---- ,----[ Rechte fuer Verzeichnisse ] | [sstrwxrwxrwx] | |||||||||||| | |||||||||||`- 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 `---- Zuerst wird Besitzer, dann Gruppen und dann Fremdrechte betrachtet, so 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. '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. '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). Manpages: 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). |
Zitat
chown matze: {}
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Stroke« (21.10.2004, 21:39)
Zitat
Original von Stroke
chown matze: {}
Ich hab mir mal die man-page von chown anzeigen lassen,
und dort stand, dass wenn man nur den Usernamen mit einem Doppelpunkt, oder Punkt übergibt, dessen Login-Benutzergruppe zusätzlich gesetzt wird.
Zitat
Und das {} kommt vom Befehl find, den ich irgendwie lieb gewonnen habe! )
Zitat
Der ganze Befehl hieß:
find /opt/lampp/htdocs/ -name \* -exec chown matze: {} \;
Zitat
Mal nebenbei, was ist das "usenet"?
Zitat
Original von Stroke
Also ich hab da ein Buch namens "Wie werde ich UNIX-Guru?".
Und dort stand der Befehl so drin (also jetzt nicht direkt mit chown usw.).
Und dort wurde mir erklärt, dass {} in Verbindung mit find für die jeweils gefundenen Dateien steht. Und, dass man somit gleich auf alle gefunden Dateien beliebige Operationen ausführen kann.
Zitat
Aber was du mir wahrscheinlich noch mit "chown -R username.gruppe *" sagen willst, ist wohl die Tatsache, dass man solche Suchmuster bei allen Befehlen einsetzen kann, die Datei-Namen als Parameter erwarten und diese Suchmuster dann von der Shell ersetzt werden um als eine Liste von zutreffenden Dateien an den entsprechenden Befehl weitergereicht werden?
Zitat
Danke für den Hinweis, ist wohl kürzer und direkter als alles über find zu machen, nicht wahr?