Warum `chmod 644` anstelle von` chmod u = rw, go = r,… `verwenden?


38

Ich arbeite jetzt seit ein paar Jahren an * nix und eines der Dinge, an die ich mich einfach nicht gewöhnen kann, sind oktale Berechtigungen im Code. Gibt es einen anderen Grund als Zeilenlänge bevorzugen chmod 644 ...über chmod u=rw,go=r ...?

PS: Ich suche keine Erklärung für oktale Berechtigungen. Ich weiß, wie sie funktionieren, und das wird im Handbuch gut erklärt. Ich frage, warum Oktal der besser lesbaren Form vorzuziehen scheint.

Antworten:


40

Die Verwendung der Oktalcodes hat zwei Vorteile, die mir einfallen, von denen keiner so groß ist:

  1. Sie sind kürzer und einfacher zu tippen.
  2. Einige Dinge verstehen sie nur, und wenn Sie sie routinemäßig verwenden, kratzen Sie sich nicht am Kopf (oder rennen zur Dokumentation), wenn Sie auf eine stoßen. ZB müssen Sie Oktal für chmodin Perl oder C verwenden.

Manchmal können wirklich einfache Dienstprogramme die "benutzerfreundlichen" Versionen nicht verarbeiten. vor allem in Nicht-GNU-Benutzerländern.

Außerdem spucken einige Dienstprogramme Oktal aus. Wenn Sie beispielsweise ausführen, um umaskzu sehen, wie Ihre aktuelle Umask lautet, wird sie als Oktal ausgegeben (obwohl dies in Bash umask -Ssymbolisch ist).

Kurz gesagt, ich würde sagen, der einzige Grund, sie zu bevorzugen, ist, weniger Zeichen einzugeben, aber selbst wenn Sie sie nicht verwenden, sollten Sie wissen, wie sie zugeordnet sind, damit Sie einen Oktalcode finden, wenn Sie sie ausführen in eines der Dinge, die nur Oktal tut. Aber Sie müssen nicht sofort wissen, dass 5 Karten zu rx, Sie müssen nur in der Lage sein, das herauszufinden.


1
Zu sagen, dass chmodin Perl oder C eine oktale Darstellung verwendet werden muss, ist kein wirklicher Vorteil, da die Darstellung bereits vorhanden war.
Nr.

@ MaxMackie: Es ist ein Vorteil für Sie mit ihnen. Ich werde es klarstellen.
Derobert

18

Vermutlich habe ich zu lange Oktal verwendet.

7 ist rwx (mach irgendetwas damit), 5 ist rx (muss gelesen werden, um es auszuführen), 6 ist wr (jede Datendatei, die du ändern musst), 4 ist r (wir lassen dich es sehen) und 0 ist - (sorry, hier gibt es nichts zu sehen). Und die Reihenfolge ist Ich, Wir, Jeder. Dies sind die Grundkombinationen.

Ich kann es ändern und ausführen, jeder andere kann es ausführen.

644 Ich kann es ändern, alle anderen können es lesen.

444 Nur für alle, wir sind hier durch.

500 Ich kann es ausführen, möchte nicht, dass es sich ändert, alle anderen Hände weg.

Für mich ist es kurz, auf den Punkt. 9 Zeichen und eine Dateispezifikation und weiter.


Nun, oktal (Basis 8), nicht hexadezimal (Basis 16).
Derobert

Ja, das eine, das halbe Hex. <grin>
Fiasco Labs

Ebenso finde ich das Oktal besser lesbar als die Textfassung ...
Brian Knoblauch

13

Ich habe die oktale Darstellung nie wirklich genossen, ich habe mich immer für die direkte rwxr-xr-xNotation entschieden, da sie mir einfacher erscheint. Nach dem, was ich sammle, gibt es jedoch eine oktale Darstellung, die es uns tatsächlich leichter macht, uns zu erinnern (ich verstehe nicht, wie das funktioniert).

Der einzige andere mögliche Vorteil, den ich beim Einbringen von Octal sehe, ist die fehlende Mehrdeutigkeit. Die 8 verschiedenen Berechtigungsbitkonfigurationen werden durch eine einzelne eindeutige Nummer dargestellt. Ich bin mir sicher, dass dies manchen Menschen dabei hilft, versehentlich eine Stelle wanzugeben, die sie nicht haben sollten.

Leider habe ich diese Tabelle auswendig gelernt:

#  r  w  x
0  0  0  0
1  0  0  1
2  0  1  0
3  0  1  1
4  1  0  0
5  1  0  1
6  1  1  0
7  1  1  1

8
Ich habe gelernt, dass ich für jeden Satz von 3 Binärdateien verwende. Rw ------- wäre also (110) (000) (000), also (6) (0) (0). rwxr-xr-x wäre (111) (101) (101), also (7) (5) (5).
Rob

4
Der primäre Grund der Oktaldarstellung existiert, weil das ist , wie die ursprüngliche Unix - Berechtigungssystem programmiert wurde, von C. 4 Oktalziffern (erinnere mich an die speziellen diejenigen, wie 1777 für /tmp, einschließlich der Sticky - Bit) hat 12 Bits, eine bequeme Größe auf PDPs, vor allem der PDP-8. Wenn sie mit hex gegangen wären, hätte eine natürliche Zuordnung eines Berechtigungssatzes pro hexadezimaler Ziffer eine 16-Bit + -Wortmaschine erfordert, die nicht alle PDPs waren. Es hätte auch 3 Bits verschwendet oder verlangt, dass sie eine Verwendung für diese Bits erfinden, was wahrscheinlich Unix-Dauerwellen ohne wirklichen Nutzen kompliziert hätte.
Warren Young

¹ geht übrigens an @Rob. Tatsächlich ist das Berechnen einer tatsächlichen Zahl aus der binären Darstellung eine grundlegende Kombinatorik, und Sie müssen sich nicht einmal daran erinnern, dass "Oktal" vorliegt, da die maximale Zahl (dh 111b) 7 nicht überschreitet.
Hi-Angel

Diese Tabelle macht es sehr deutlich. Das ist großartig!!!
Little Roys

6

Ich denke der Grund ist wieder - Geschichte. Anfangs waren die Oktalwerte die einzigen. Die symbolischen kamen später.

Ich bevorzuge die symbolischen. Vor allem, wenn Sie vorhandene Werte ändern möchten, ohne andere Bereiche zu berühren.

So chmod -R u=rwx,g-w+X,o=-machen Sie das im Oktal ...


3

Beachten Sie, dass Oktalmodi auf einigen Systemen Setuid- und Setgid-Bits entfernen können.

Fedora 16:

$ mkdir dir
$ chmod 2775 dir
$ stat -c %a dir
2775
$ chmod 770 dir
$ stat -c %a dir
2770

(das 2ist erhalten)

FreeBSD 9:

$ mkdir dir
$ chmod 2775 dir
$ stat -f %Mp%Lp dir
2775
$ chmod 770 dir
$ stat -f %Mp%Lp dir
0770

(Das 2wurde ein 0)

Wenn Sie die Berechtigungen einer Datei oder eines Verzeichnisses ändern möchten, ist es möglicherweise besser, nur die Bits anzugeben, die Sie ändern möchten (z. B. chmod o= diroder chmod o-rwx dirim obigen Beispiel).


2

Die Geschichte erklärt, warum die oktalen Modi existieren , aber ich denke, Funktionalität ist der Grund, warum die mnemonische Form existiert. Und alle Punkte zu anderen Tools, die ausschließlich Oktal-Modi verwenden, sind absolut gültig, und ich denke, Sie müssen sie lernen und kennen. Trotzdem sehe ich, dass konservative Admins nicht den wahren Nutzen sehen, der von der mnemonischen Form herrührt.

Die oktale Form neigt, besonders wenn sie rekursiv verwendet wird, dazu, Administratoren dazu zu zwingen, dumme Dinge zu tun. Oder eher Nachlässigkeit führt dazu, dass es sich als dumm herausstellt. Immer wenn Sie auf einen Ordner mit vielen Textdateien und dem xgesetzten Bit stoßen, haben Sie Beweise.

Warum sollte jemand das xBit so einstellen ? Weil es schwierig ist, dies nicht zu tun, wenn Sie nicht die Gedächtnisform für Modi verwenden. Stellen Sie sich vor, Sie möchten die Berechtigungen für zurücksetzen /var/wwwund führen kein CGI im alten Stil aus. Daher sollte das xBit entfernt werden. Bei xVerzeichnissen dient das Bit jedoch einem anderen Zweck. Am Ende machst du also etwas (wie root):

chmod -R 666 /var/www
find /var/www -type d -exec chmod 777 {} \;

Wenn Sie jedoch die Gedächtnisform verwenden, können Sie ihr ein "Rezept" geben:

chmod -R a=rwX /var/www

Was ist die Kurzform von chmod -R ugo=rwX /var/www(Erreichen des gleichen, aber unterschiedlichen Weges:) chmod -R a-x,a+rwX /var/www.

Aber es gibt noch etwas Trivialeres, das mit den Oktalmodi nicht erreicht werden kann. Sie können die useroder groupoder otherMaske nicht einzeln mit der Oktalform anpassen .

Kurz gesagt: Es ist wie beim Vergleichen eines Skalpells (Mnemonik) und eines scharfen Küchenmessers (Oktal) ... aber Sie müssen die Oktalmodus-Bits aus anderen Gründen noch kennen :)

Der Grund, warum oktale Modi immer noch bevorzugt werden , liegt meiner Meinung nach nicht mehr in der mnemonischen Form, sondern in übermäßig konservativen Admins. Und ja, diese übermäßig konservativen Admins existieren immer noch und werden für einige Zeit hier bleiben.


0

Wenn Sie die Berechtigungen von Dateien ständig ändern müssen , schätzen Sie die 3 Zeichen. Die meiste Zeit benutze ich die +oder --Versionen, um Berechtigungen zu ändern.

Zum Beispiel erstelle ich ein neues PHP-, Python- oder anderes Skript in meinem Apache-Ordner. chmod a+xist alles was ich tue damit es laufen kann. Ich habe es als "all plus execute" gelesen. Jetzt weiß ich, dass es funktionieren wird und ich brauchte nur 3 Charaktere.

Andere Male benutze ich 644 und 755 automatisch. Ich stelle es mir einfach als 644eine Datei vor, als 755ein Skript.


0

Es passt gut zu den umask-Einstellungen, die normalerweise in oktaler Schrift (in pamoder fstab) angegeben werden.


0

Ich schlage vor, dass ein wichtiger Grund darin besteht, dass die Oktaldarstellung genau mit dem übereinstimmt, was Sie sehen ls -l(oder eher, wenn Sie mental zwischen Oktal und Binär konvertieren).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.