Ich muss Lese- und Schreibberechtigungen für root
Benutzer zum Verzeichnis subfolderN
und zu allen seinen übergeordneten Ordnern bis einstellen root
.
Ich kann es mit den Händen machen:
$ sudo chmod +rx /root/subfolder1/subfolder2/subfolderN
$ sudo chmod +rx /root/subfolder1/subfolder2
$ sudo chmod +rx /root/subfolder1
$ sudo chmod +rx /root
Aber wenn N
es groß ist, bin ich müde. Wie mache ich das automatisch mit einem Befehl?
permissions
directory
Maxim Yefremov
quelle
quelle
/root
lesbar machen.Antworten:
Dies kann einfach in der Shell durchgeführt werden, beginnend im Unterverzeichnis und aufwärts bewegend:
Dies beginnt mit der Datei / dem Verzeichnis, das Sie auch für f festgelegt haben, und funktioniert in jedem übergeordneten Verzeichnis, bis es auf "/" stößt (oder wie auch immer Sie die Zeichenfolge in der Bedingung der Schleife festlegen). Es wird nicht "/" chmod.
quelle
f
es sich um einen relativen Pfad handelt, und ich möchte anhalten, wozu er relativ ist, anstatt/
?$f
jafoo/bar
, wird sich das$f
jemals ändern.
? Jadirname
macht es. Vielen DankMit
csh
,tcsh
,ksh
,zsh
,bash
,fish
oderyash -o braceexpand
:Mit
zsh
:Oder Sie definieren eine Glob-Qualifier-Funktion wie:
Zum Beispiel als:
Beachten Sie, dass dies
chmod +rx
von der umask beeinflusst wird. Wennumask
dies nicht enthalten ist007
, wird das/root
Verzeichnis für die ganze Welt lesbar und zugänglich, was eine schlechte Idee ist./root
ist in der Regel für die privaten Dinge des Super-Benutzers, es ist eine schlechte Idee, es freizulegen.quelle
,
in{,/subfolder}
macht?/subfolder
. so/root{,/subfolder}
produziert/root
und/root/subfolder
sh
Nun, Sie könnten etwas etwas komplexeres machen, wie:
Ersetzen Sie den
chmod
Aufruf durch Drucken , um zu sehen, was dies bewirkt:quelle
Ich weiß nicht, was Sie versuchen, aber es ist besser, wenn Sie das Rekursive nicht leicht nehmen . Das heißt, lesen Sie die eigentliche Antwort:
Ähm ... warum nicht einfach rekursiv verwenden.
Oder wenn es Ihnen nicht gefällt, können Sie
chmod
mehrere Verzeichnisse angeben:quelle
chmod -R /root
ändert alles unter/root
- einschließlich regulärer Dateien und aller Verzeichnisse. Die Frage ist, ob nur eine Verzeichniskette geändert werden soll.