Linux chmod Befehl für Anfänger

Es gibt Zeiten, in denen Sie z.B. ein Bash-Skript auf Ihrem Linux-Rechner erstellen. Aber wenn Sie versuchen, es auszuführen, erhalten Sie einen Berechtigungsfehler. Was machst du so? Einfach, vorausgesetzt, Sie sind in Ubuntu, klicken Sie mit der rechten Maustaste auf das Dateisymbol, gehen Sie auf die Registerkarte „Berechtigungen“ und aktivieren Sie die Option „Datei als Programm ausführen lassen“. Aber was ist, wenn die Anforderung darin besteht, diese Änderung von der Kommandozeile aus vorzunehmen?

Wenn Sie neu bei Linux sind und nach einer Möglichkeit suchen, die Datei- und Verzeichnisberechtigungen über die Befehlszeile zu ändern, werden Sie sich freuen zu erfahren, dass es einen Befehl – genannt chmod – gibt, mit dem Sie dies einfach tun können. In diesem Tutorial werden die Grundlagen dieses Befehls erläutert und Beispiele gegeben, die erklären, wie er in verschiedenen Szenarien verwendet werden kann.

Bitte beachten Sie, dass alle in diesem Tutorial genannten Beispiele und Anweisungen auf Ubuntu 16.04LTS getestet wurden und die von uns verwendete chmod-Version 8.25 ist.

Chmod Grundlagen

Betrachten Sie das folgende Beispiel für den Befehl ls:

Die erste Spalte in der Ausgabe ist für uns von Interesse. Abgesehen vom anfänglichen ‚-‚ (was den Dateityp angibt) können die restlichen Felder in der Spalte weiter aufgeschlüsselt werden wie: rw-, rw-, rw-, und r–. Dies sind die Berechtigungen, die der Dateibesitzer, die Gruppe, zu der die Datei gehört, und andere haben, wenn es um diese Datei geht.

Das bedeutet, dass der Besitzer sowohl Lese- (r) als auch Schreibrechte (w) hat. Die Gruppe auch. Andere haben jedoch nur Leserechte für die Datei. Bitte beachten Sie, dass wir davon ausgehen, dass sich die Datei im Besitz des aktuellen Benutzers befindet.

Angenommen, die Anforderung ist, jedem das Recht zu geben, diese Datei auszuführen. Hier ist, wie man das machen kann:

chmod +x script.sh

Hier sind jetzt die Berechtigungen:

Das zusätzliche’x‘ in den Berechtigungen für Eigentümer, Gruppe und andere bedeutet, dass nun jeder Zugriff auf diese Datei hat.

In den meisten Fällen möchten Sie jedoch nicht, dass jeder den Zugriff auf eine Datei hat. Was passiert, wenn die Anforderung darin besteht, nur dem Eigentümer/Aktuellen Benutzer den Zugriff auf die script.sh zu gewähren?

Nun, dafür wäre der erste Schritt jetzt, den Zugriff von allen zurückzunehmen, was Sie mit dem folgenden Befehl tun können:

chmod -x script.sh

Und dann dem Besitzer explizit gewähren:

chmod u+x script.sh

Wie Sie vermutet haben, sagt ‚u+x‘, dass grant (+) dem Besitzer/aktuellen Benutzer (u) den Zugriff auf die Datei gewährt (x). Ebenso kannst du für die Gruppe ‚g‘ und für andere ‚o‘ verwenden.

Bitte beachten Sie, dass Sie, wenn Sie einen gemeinsamen Satz von Berechtigungen für/von allen erteilen/entziehen möchten, ‚a‘ anstelle von ‚ugo‘ verwenden können. Was ich meine, ist, das hier:

chmod ugo-x script.sh

kann durch diese ersetzt werden:

chmod a-x script.sh

Denken Sie auch daran, dass, wenn keiner dieser Punkte (‚u‘,’g‘,’o‘ und’a‘) explizit angegeben wird, auch der Standard als’a‘ angenommen wird.

Wenn Sie weitermachen möchten, können Sie auch einfach die Berechtigungen kopieren, die z.B. dem Besitzer/Aktuellen Benutzer erteilt wurden, und sie für die Gruppe oder andere verwenden. Verwenden Sie dazu das Zeichen’=‘.

Um beispielsweise Eigentümer-/Benutzerberechtigungen für die Gruppe zu kopieren, verwenden Sie den folgenden Befehl:

chmod g=u script.sh

Ein anderes Szenario könnte sein, Berechtigungen für eine bestimmte Datei zu kopieren und sie für Ihre Datei zu haben. Verwenden Sie dazu die Option –Referenz Kommandozeilenoption. Hier ist die allgemeine Vorlage für die Verwendung dieser Befehlszeilenoption:

chmod --reference=[source-file] [destination file]

Im obigen Befehl ist die Quelldatei die Datei, deren Berechtigungsbits Sie kopieren möchten, und die Zieldatei ist die Datei, deren Berechtigungsbits Sie ändern möchten.

Weiter geht es mit einer numerischen Notation (auch bekannt als oktale Darstellung), mit der Sie chmod anweisen können, Berechtigungen zu ändern. Es gibt drei Zahlen, mit denen Sie in diesem Modus spielen: 4, 2 und 1. 4 ist zum Lesen, die anderen beiden zum Schreiben bzw. Ausführen.

Betrachten Sie beispielsweise das folgende Beispiel:

Nun, nehmen wir an, dass die Aufgabe darin besteht, Ausführungsberechtigung für Eigentümer/Benutzer hinzuzufügen, Schreibberechtigung zu entfernen, aber Ausführungsberechtigung für die Gruppe hinzuzufügen und alle Berechtigungen von anderen zu entfernen. Dies kann wie folgt geschehen:

chmod 750 script.sh

Im obigen Befehl steht’7′ für user, was das Ergebnis von 4+2+1 ist, da die Anforderung an user ist, alle Berechtigungen zu haben. Ebenso ist’5′ für die Gruppe, die das Ergebnis von 4+0+1 als Anforderung ist, nur Lese- und Ausführungsrechte für die Gruppe zu vergeben. Schließlich ist’0′ für andere, was das Ergebnis von 0+0+0+0 ist, da die Anforderung darin besteht, alle Berechtigungen von anderen zu entziehen.

Für diejenigen, die sich mit symbolischen Links beschäftigen, gibt es hier etwas Wissenswertes:

chmod never changes the permissions of symbolic links; the chmod system call cannot change their permissions.  This is not a problem since  the
permissions  of  symbolic links are never used.  However, for each symbolic link listed on the command line, chmod changes the permissions of
the pointed-to file.  In contrast, chmod ignores symbolic links encountered during recursive directory traversals.

Fazit

Der Befehl chmod ist vielleicht nicht derjenige, den Sie täglich benötigen, aber es ist ein äußerst nützliches/wichtiges Werkzeug, das Sie kennen sollten. Hier, in diesem Tutorial, haben wir die meisten Grundlagen dieses Tools besprochen, und die Beispiele, die wir besprochen haben, zielen darauf ab, diese Grundlagen klarzustellen.

Bitte beachten Sie, dass sich unsere Diskussion hauptsächlich auf Dateien konzentrierte. Es gibt einige Details, die du beachten solltest, wenn du chmod mit Verzeichnissen verwendest. Für all diese Informationen (sowie weitere Details zu chmod), gehen Sie zur Man Page des Tools.

Das könnte dich auch interessieren …