[[Ausbaufaehig(Die Anleitung kann eine Überarbeitung vertragen!)]] [[TableOfContents(3)]] Verändert die Zugriffsrechte von Dateien. = Aufruf = {{{#!Befehl chmod [Option] Modus Datei chmod [Option] Oktal-Modus Datei }}} = Beispiel = {{{#!Befehl chmod u+r Datei #Der Eigentümer darf lesen. chmod a+w Datei #Alle dürfen schreiben chmod u+s Datei #SUID-Bit für User setzen }}} = Parameter = || ''' -R ''' || Ändert die Zugriffsrechte von Dateien und Verzeichnissen Rekursiv || = Zuordnungen = || '''u''' || Besitzer der Datei || || '''g''' || Gruppe der Datei || || '''o''' || Andere (Rest der Welt) || = Modi = || ''' s ''' || SUID-Bit || || ''' r ''' || Leserechte || || ''' w ''' || Schreibrechte || || ''' x ''' || Ausführungsrechte || Diese Rechte werden mit einem vorangestellten `+` einer Datei oder einem Verzeichniss gegeben und mit einem `-` entzogen. Mehrere Operationen dürfen direkt aneinander angehängt werden. = Oktal-Modi = || ''' 4 ''' || Leserechte || || ''' 2 ''' || Schreibrechte || || ''' 1 ''' || Ausführungsrechte || Die Rechte werden für den Dateibesitzer, die Dateigruppe und die Anderen separat addiert. An jeder Stelle bedeutet ein gesetzter Wert das die Rechte gewährt und ein 0 dass sie entzogen werden. Die Rechte werden somit durch drei Stellen vollständig beschrieben, die erste Stelle gibt die Rechte des Eigentümers, die Zweite die Rechte der Gruppe und die letzte Stelle die Rechte für alle Übrigen an {{{#!Befehl det@datengrab:~/tmp/rechte$ ls -l insgesamt 4 -rwx------ 1 det det 0 2005-07-07 10:41 Datei1.sh -rw-rw-r-- 1 det det 0 2005-07-07 10:41 Datei2.txt drwxr-xr-x 2 det det 4096 2005-07-07 10:44 Verzeichnis }}} In diesem Beispiel befinden sich zwei Dateien und ein Verzeichnis. Am Anfang steht ein Block aus zehn Zeichen. Das erste zeigt an um was für einen Dateityp es sich handelt. Bei einfachen Dateien steht dort ein -, bei Verzeichnissen ein d (directory), bei Verweisen ein l (link). Danach folgen drei Blöcke mit drei Zeichen. Der erste Block steht für den Dateibesitzer, der zweite für die Gruppe und der dritte für all anderen. Jeder dieser Blöcke baut sich auf aus den lese- (r, Read), den schreib- (w, Write) und den ausführungsrechten (x, eXecute). Wenn der Buchstabe gesetzt ist ist das Recht vorhanden. Die Datei Datei1.sh darf nur der Besitzer lesen, beschreiben und ausführen. Wir wollen, dass alle sie lesen und ausführen dürfen: {{{#!Befehl det@datengrab:~/tmp/rechte$ chmod +rx Datei1.sh det@datengrab:~/tmp/rechte$ ls -l insgesamt 4 -rwxr-xr-x 1 det det 0 2005-07-07 10:41 Datei1.sh -rw-rw-r-- 1 det det 0 2005-07-07 10:41 Datei2.txt drwxr-xr-x 2 det det 4096 2005-07-07 10:44 Verzeichniss }}} Anders sieht es mit den Schreibrechten aus. Wenn wir versuchen durch ein -w der Datei2.txt die Schreibrechte für alle zu entziehen wird dies scheitern. Diese werden bei Symbolischer Schreibweise immer nur dem Besitzer der Datei gegeben oder entzogen. {{{#!Befehl det@datengrab:~/tmp/rechte$ chmod -w Datei2.txt det@datengrab:~/tmp/rechte$ ls -l insgesamt 4 -rwxr-xr-x 1 det det 0 2005-07-07 10:41 Datei1.sh -r--rw-r-- 1 det det 0 2005-07-07 10:41 Datei2.txt drwxr-xr-x 2 det det 4096 2005-07-07 10:44 Verzeichniss }}} Wenn wir dies ändern wollen greifen wir auf die oktale Schreibweise zu: {{{#!Befehl det@datengrab:~/tmp/rechte$ chmod 444 Datei2.txt det@datengrab:~/tmp/rechte$ ls -l insgesamt 4 -rwxr-xr-x 1 det det 0 2005-07-07 10:41 Datei1.sh -r--r--r-- 1 det det 0 2005-07-07 10:41 Datei2.txt drwxr-xr-x 2 det det 4096 2005-07-07 10:44 Verzeichniss }}} = SUID-Bit = {{{#!Warnung Setzen von SUID-BIT nur wenn es __unbedingt__ notwendig ist! }}} Manchmal braucht man unter Linux die möglichkeit User Sachen machen zu lassen die sie eigentlich nicht dürfen (zb. Passwort ändern, dh schreibrechte auf /etc/shadow). Deswegen hat Linux die Option "Set User ID", kurz SUID-Bit oder auch Sticky-Bit. Ist der Sticky-Bit gesetzt wird eine ausfühbare Datei nicht mit der Berechtigung vom User sondern mit der Berechtgung vom Eigentümer der Datei ausgeführt (der als user für die Datei eingetrage ist). {{{#!Befehl ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 25692 Mar 8 2001 /usr/bin/passwd ^ | \_______ s .. das setuid bit. Nochmalerweise steht statt dem s ein x... }}} Analog dazu gibt es noch den "Set Group ID". Ist dieser gesetzt wird die Datei mit den Rechten der Eigentümergruppe ausgeführt. {{{#!Befehl -rwxr-sr-x 1 root tty 9276 Mar 8 2001 /usr/bin/wall ^ | \__ s .. set groupid. }}} Mit disem Befehl sucht mal alle Dateien mit Sticky-Bit: {{{#!Befehl find /usr -perm +6000 -type f }}} Referenzen findet man in: {{{#!Befehl man chmod }}} = SGID-Bit = Mit dem ''Set Group ID Bit'' kann man gemeinsame Ordner einrichten. Ist diese Bit gesetzt (mit ''chmod g+s OrdnerName/'') dann vererbt sich die User Gruppe beim erstellen eines neuen Unterordners mit. Möchte man einen gemeinsamen Ordner einrichten, in dem mehrere User Dateien/Ordner erstellen können soll, dann muß man wie folgt vorgehen: 1. Alle User, die Zugriff erhalten sollen, in eine gemeinsame User-Gruppe stecken: 1. "System/Administration/Benutzer und Gruppen" starten 1. "Gruppen verwalten" 1. Neue Gruppe erstellen oder bestehende Gruppe nutzten, wir z.B. ''users'' 1. In Eigenschaften die User zu der Gruppe hinzufügen 1. Ordner einrichten (Terminal) 1. Gruppe setzten: ''sudo chown .users /beispiel/fotos'' 1. SGID setzten: ''chmod g+srwx /beispiel/fotos'' = Rechte rekursiv setzen = In manchen Fällen möchte man für alle Dateien und Ordner in einem Verzeichnis die Rechte auf einmal setzen. Da Dateien und Ordner anderen Rechte benötigen, kann man hier nicht mit einem befehl arbeiten, aber '''find''' hilft hier: {{{#!Befehl cd /verzeichnis find -type d -exec chmod 755 {} \; find -type f -exec chmod 644 {} \; }}} ---- * ["Kategorie/Shell"]