Was ist weiter verbreitet: chmod 777 oder chmod a + rwx [closed]

20

Von den beiden Optionen zum Ändern von Berechtigungen:

  • chmod 777 file.txt
  • chmod a+rwx file.txt

Ich schreibe ein Dokument mit Details, die Benutzer benötigen, um die Dateiberechtigungen einer bestimmten Datei zu ändern. Ich möchte es als die am häufigsten verwendete Methode zum Ändern von Dateiberechtigungen beschreiben.

Derzeit heißt es:

- Set permissions on file.txt as per the example below:
    - chmod 777 /tmp/file.txt

Dies ist nur ein Beispiel und ändert keine Dateien, um für alle Benutzer die vollständigen Berechtigungen zu erhalten.

Kevdog777
quelle
6
erste lösung ist kürzer und verbreiteter, die zweite habe ich nie gesehen.
Archemar
2
Das Festlegen von Lese-, Schreib- UND Ausführungsberechtigungen für alle Benutzer ist in Bezug auf die Sicherheit keine gute Idee. Sie sollten stattdessen chmod 773 verwenden.
Martin Erhardt
1
@MartinErhardt würde ich normalerweise nur 775oder nur 755für ausführbare Dateien verwenden.
Kevdog777
3
chmod 777ist wie chmod a=rwxnicht chmod a+rwx.
Stéphane Chazelas
1
777oder 666ist einfach und viel einprägsamer als ugo+rwx, a+rwxoder ugo+rwwas sehr verwirrend ist, da oes mehrdeutig ist und für Sie entweder den Eigentümer oder andere bedeuten kann, die Sie wählen. Anstatt also den großen Fehler zu machen, überprüfen Sie immer manwieder, welcher der beiden ist, oder verwenden Sie einfach die Zahlen.
Kenorb

Antworten:

29

Google gibt:

chmod 777 ist etwa 3 mal beliebter.

Trotzdem bevorzuge ich lange Optionen in der Dokumentation und in Skripten, weil sie sich selbst dokumentieren. Wenn Sie Ihren Anweisungen mit " ls -l | grep file.txtBerechtigungen ausführen und überprüfen" folgen , können Sie diese verwenden, chmod a+rwxda auf diese Weise die Berechtigungen angezeigt werden.

Whitlock
quelle
Danke dafür. Ich vermute, dass die Leute durch das vollständige 7
Ausschreiben
1
Ich denke , der Grund chmod 777populärer ist (wie conjetured vor Ihren Zahlen zu sehen) ist einfach , dass Sie 2 Zeichen weniger geben :)
Ángel
Wenn Sie in Ihrer Dokumentation Tipps hinzufügen möchten, können Sie einen Tipp hinzufügen, der chmod 777eine praktische Abkürzung darstellt, um den gleichen Effekt zu erzielen. Ihre Leser würden das pädagogische Element in Ihrer Dokumentation schätzen. 777 ist populärer, weil es viel einfacher und schneller ist, 7 dreimal zu treffen, aber wenn ein neuer Benutzer 777 zum ersten Mal sieht, weiß er möglicherweise nicht genau, was es bedeutet. Deshalb ist es eine schlechte Wahl als primäre Dokumentation. Aber es ist definitiv erwähnenswert als Tipp.
ADTC
Als Tangens würden mein Bruder und seine Freunde diese Technik verwenden, um Scrabble-Wörter zuzulassen. Sie hatten einen bestimmten Schwellenwert für die Anzahl der Google-Treffer, bevor ein Wort als "echt" eingestuft wurde
Wayne Werner,
Ich denke, es ist beliebt, weil es älter ist (die symbolische Notation wurde später hinzugefügt). Wenn also jemand etwas auswählt, sucht er auf Google oder was auch immer das Äquivalent der Zeit war und geht mit der Menge. Ich denke, es ist einfacher, symbolisch zu verwenden, weil ich, wenn ich die Zahlen herausgefunden habe, die ich hätte tippen können, es auch auf Anhieb richtig mache.
Strg-Alt-Delor
26

[Ich bearbeite, um bewährte Verfahren hinzuzufügen, und folge dabei dem Vorschlag von Dotancohen in seiner Antwort. Ich hoffe, es macht es nicht weniger klar, und dass die gute Angewohnheit genommen wird]

Wichtige zusätzliche Informationen: Sie sind nicht gleichwertig.

chmod a+rwx: setze die letzten 3 Oktale auf 777, damit sichergestellt ist, dass Besitzer, Gruppe und Benutzer das "rwx" gesetzt haben. Wenn das erste Oktal zusätzliche Bits enthält (setuid, setgid und / oder Sticky-Bit), bleiben diese davon unberührt. Betrachten Sie es als binär "oder 00777".

chmod 777 : Setzen Sie die Rechte auf 00777, um sicherzustellen, dass der Eigentümer, die Gruppe und die Benutzer "rwx" eingestellt haben, UND NICHTS MEHR. Stellen Sie außerdem sicher, dass die zusätzlichen Bits (setuid, setgid und / oder Sticky-Bit) auf 0 gesetzt sind.

Verwenden Sie also das erste Formular, wenn Sie nur sicherstellen möchten, dass jeder Zugriff hat (und stellen Sie sicher, dass dies doppelt, dreifach erforderlich ist ... es öffnet die Tür für alle Arten von Sicherheitsproblemen, von denen einige unerwartet weitreichend sind sie erlauben einem böswilligen Benutzer dies zu tun)

Verwenden Sie das 777-Formular, wenn Sie auch sicherstellen möchten, dass alle setuid / setgid / sticky-Bits zurückgesetzt werden, dh wenn die Dateien "00777" sein müssen, was in Ihrem Fall wahrscheinlich wahrscheinlicher ist (das Recht der Datei ist bekannt, und sollte es sein) : 00777). Stellen Sie auch hier dreifach sicher, dass es wirklich benötigt wird ...

Normalerweise ist es am besten, den Zugriff auf den Eigentümer (und manchmal auf die Gruppe) beizubehalten. Verwenden Sie dann die Gruppen, um bestimmten Benutzern Zugriff auf die Datei / das Verzeichnis zu gewähren. a + rwx ist sowohl einfach als auch normalerweise der falsche Weg, um Zugriff zu gewähren (natürlich gibt es sehr selten Fälle, in denen dies der einzige Weg ist ...)

http://en.wikipedia.org/wiki/Chmod ist eine gute Lektüre, da es erklärt, was jede Zahl oder jeder Buchstabe darstellt (einschließlich setuid / setgid / sticky)

Olivier Dulac
quelle
1
Außerdem ist chmod a + w (das ein + rwx enthält) für eine suid-Datei sehr gefährlich. Muss ich auf chmod a + w * näher eingehen?
Joshua
Was bringt es, die othersErlaubnis zu setzen? Wenn Sie als Benutzer auf dem Computer angemeldet sind, können Sie dann doch einfach die usersBerechtigung verwenden?
Kevdog777
@ Kevdog777: Andere sind für Leute, die weder der Besitzer noch die Gruppe sind, auch bekannt als alle anderen im System
Olivier Dulac
1
@ Kevdog777: Wenn nur root und der Benutzer Zugriff benötigen: chmod 00600 (wenn die Datei nicht ausgeführt werden muss) oder chmod 00700 (wenn die Datei ausgeführt werden muss - oder - es ist ein Verzeichnis). oder chmod 00400, um einen (winzigen, leicht zu überschreibenden) Schutz gegen das Ändern / Schreiben in die Datei hinzuzufügen (00500 für ein Verzeichnis). Dann können andere (und Personen in der Gruppe, aber nicht der Benutzer) nicht auf die Datei / dir zugreifen. (Nach Punkt und Zeichen füge ich das 4. Oktal dort hinzu + eine "0" davor: macht keinen Unterschied für die Shell, hilft aber, wenn Sie es über perl / C / etc einstellen und das 4. Oktal ist eine Art Erinnerung, dass es existiert , und dass es auch eingestellt ist)
Olivier Dulac
4
chmod 777ist wie chmod a=rwx.
Stéphane Chazelas
1

Ich denke normalerweise, dass der Unterschied darin besteht, dass die Berechtigungen explizit auf 0777 gesetzt werden. Wie bereits erwähnt, wird die führende 0 abgeleitet, wenn Sie nur 777 eingeben bisschen unberührt.

Angenommen, Sie möchten nur sicherstellen, dass eine Datei ausführbar ist, und können ein + x verwenden, um die Ausführungsberechtigung zu ändern, ohne sich Gedanken über die anderen Berechtigungen zu machen oder diese zu ändern. Wenn Sie die oktale Darstellung verwenden, müssen Sie wissen, welche Berechtigungen derzeit festgelegt sind, um sicherzustellen, dass Sie die Berechtigungen nicht auf andere Weise als beabsichtigt ändern.

Josh Famestad
quelle
0

Ich würde sagen, dass die Angabe der numerischen Werte in "einfachen Völkerhandbüchern", wie sie für Benutzer von Budget-Webhosting erstellt wurden, weitaus häufiger vorkommt. Achten Sie jedoch darauf, sie als oktale und nicht als dezimale Werte anzugeben :

$ chmod 0777 some_dir

Beachten Sie die führend 0in 0777. Obwohl Bash und andere CLI-Umgebungen mit dem ungepolsterten Code das Richtige tun, verfügen 777viele Programmiersprachen wie PHP und Perl über ähnliche Funktionen, für die die führenden erforderlich sind 0. Daher empfehle ich auch die Verwendung in Bash, um daran zu denken, dass es dort sein soll.

Hinweis für Abwähler: Wie in den Kommentaren erläutert , muss der chmodBefehl die Direktive tatsächlich als oktal übergeben, auch wenn die Dezimalschreibweise angegeben ist. Allerdings sind nicht alle Umgebungen unterstützen dies, so ist es am besten Praxis , es zu spezifizieren explizit zu gewöhnen.

dotancohen
quelle
10
chmodbehandelt die Zahl niemals als Dezimalzahl. chmod 777 fileund chmod 0777 filesind völlig gleichwertig.
Celtschk
3
@ Kevdog777: "oktal" bedeutet nur Base-8. Aber Sie müssen sich nicht darum kümmern, was die Verwendung des chmodShell-Befehls betrifft. Sie können sich die drei Ziffern einfach als unabhängig voneinander vorstellen, von denen jede eine Reihe von Berechtigungen angibt.
Celtschk
3
Für chmod bedeutet die 0 in 0777 "setuid-, setgid- und sticky-Bits löschen". Dies entspricht 777, da das Argument immer mit führenden Nullen auf vier Ziffern aufgefüllt wird. Aus dem gleichen Grund chmod 77ist äquivalent zu chmod 077.
Emil Jeřábek unterstützt Monica
1
Der chmodBefehl interpretiert sein Modusargument in Oktal. Sie müssen aufpassen, wenn Sie die meisten Programmiersprachen (C, Perl, ...) verwenden, aber in einem Shell-Skript ist es für oktal chmod.
Gilles 'SO- hör auf böse zu sein'
1
+1 für Ihre Notiz, da es in der Tat gut ist, immer eine 0 voranzustellen (auch wenn alle 4 Oktale gesetzt sind: zum Beispiel 01777), da es keinen Unterschied für die Shell macht, aber sicherstellen, dass C, Perl und andere es als Oktal interpretieren
Olivier Dulac