777
Nachdem ich zu Debuggingzwecken alles in meinem Projekt auf ( ) gesetzt hatte rwxrwxrwx
, wollte ich die Offenheit verringern und die Verzeichnisse (nicht die Dateien) im Stammordner auf 664
( rw-rw-r--
) setzen.
Dazu habe ich (vonWie liste ich Ordner mit Bash-Befehlen auf?):
chmod 664 -- */
Das funktionierte wie erwartet. Dann wurde mir klar, dass ich das Ausführungsbit für Verzeichnisse brauchte, um sie aufzurufen. Also versuchte ich:
chmod 764 -- */
Aber das hat einen missing operand after "764"
Fehler verursacht.
Ich kann die Berechtigungen manuell ändern ( chmod 764 <dir-name>
) und es gibt nicht so viele Verzeichnisse, also ist es kein großes Problem, aber ich würde es gerne verstehen.
Warum kann ich chmod 764 */
die Verzeichnisse in meinem aktuellen Pfad nicht auf festlegen rwxrw-r--
?
Antwort1
Dies wäre sinnvoll, wenn Sie Shell-Glob-Optionen so eingestellt haben, dass
*
umfasst Namen, die mit beginnen.
, und- ein Platzhalter, der mit nichts übereinstimmt, verschwindet einfach, anstatt unverändert bestehen zu bleiben. (Wenn Sie beispielsweise keine Dateien haben, deren Namen mit beginnen
foo
, druckt der Befehlecho foo*
eine leere Zeile, anstatt den Textfoo*
wörtlich zu drucken.)
Wenn die oben genannten Bedingungen zutreffen, wird der erste Befehl .
in den Modus 664 gesetzt, was bedeutet, dass Sie beim Ausgeben des zweiten Befehls keine Leseberechtigung hatten .
. Daher */
konnte nicht erweitert werden und chmod 764 -- */
wurde zu chmod 764 --
.