Ich habe in eine Menge Ärger , wenn die Berechtigung eines Ordners zu ändern myfolder
Wohnsitz in /
. Ich habe den Befehl erteilt
sudo chown -R luca:luca /myfolder/.*
Meine Absicht war es, den Besitz aller versteckten Dateien in zu ändern /myfolder
.
Leider wurde mir klar, dass auch das Eigentum an /
geändert wurde, was mich natürlich mit einem kaputten System zurückließ. Ich denke, das ist passiert, weil ..
Streichhölzer .*
, aber mir scheint es immer noch komisch.
Ist das Ändern des übergeordneten Verzeichnisses das richtige Verhalten oder sollte ich einen Fehlerbericht einreichen?
Wenn es mein Fehler bei der Verwendung von chown war, welche bewährten Methoden sollten verwendet werden, um zu verhindern, dass der Besitz von Systemordnern und -dateien geändert wird?
permissions
filesystem
chown
hidden-files
Lucaceron
quelle
quelle
..
Streichhölzer.*
.*
bedeutet jede Datei, die mit endet.
*.
bedeutet jede Datei, die mit beginnt.
/
direkt zu ändern (Ordner erstellen, entfernen usw.), es sei denn, dies ist unbedingt erforderlich (stellen Sie eine Frage zu dem, was Sie erreichen möchten). Die Verwendung von Platzhaltern und Root-Rechten ist ebenfalls gefährlich, da Sie häufig nicht 100% sicher sind, was vom Platzhalter betroffen ist.chmod
undchown
sind ähnliche Befehle, beide beginnen mitch
, enthalten eino
und haben zwei andere ähnliche Buchstaben (n
undm
). </ literal> Im Ernst, sie haben beide die Form :[cmd] -R [mode or user] [one or more files]
. Einige Lösungen, die zu dieser Frage angeboten werden, funktionieren auch für Ihren Fall, zum Beispiel diese von Sean Reifschneider (in der Mitte). Diese Antwort ist auch auf versteckte Dateien nur durch die glob Muster für nicht versteckte Dateien zu entfernen.Antworten:
Denken Sie daran, dass die Befehlszeile vor der Ausführung von der Shell erweitert (interpretiert) wird
wird zuerst interpretiert als:
Beachten Sie die
/myfolder/..
in Ihrer Befehlszeilechown -R luca:luca /myfolder/..
ist gleichbedeutend damit,chown -R luca:luca /
dass das Chown "rückwärts" läuft
Verwenden
echo /myfolder/.*
Sie diese Option, wenn Sie zur Bestätigung "*" verwenden.quelle
/myfolder
. Derfind
Befehl ist überflüssig und wird mit Dateinamen unterbrochen, die Leerzeichen enthalten. (Wenn Sie Dateien rekursiv ändern möchten,find /myfolder | xargs chown luca:luca
ist ähnlich wiechown -R luca:luca /myfolder
).Gut. Die Befehlszeile als root ist sehr mächtig. Lesen Sie einige dieser Klassiker. Und ja,
.*
Matching to..
ist genau das, was beabsichtigt ist. Punkt ist kein Sonderzeichen. Es ist eine Konvention. Konventionell werden Dateien, die mit einem Punkt beginnen, beim Auflisten eines Verzeichnisses in der Standardansicht ausgeblendet - nicht weniger und nicht mehr. Konventionell erhält der zum aktuellen Verzeichnis führende Inode den.
Namen und der zum übergeordneten Verzeichnis führende Inode den..
Namen.Was Sie hätten tun sollen, war
Habe ich erwähnt, dass die Dateinamen, die mit einem Punkt beginnen, nichts Besonderes sind? Rekursiv
chown
glaubt das nicht.Im Moment können Sie möglicherweise einige der Funktionen wiederherstellen, indem Sie den Besitz wieder auf root ändern. Auf lange Sicht müssen Sie das System jedoch wahrscheinlich neu installieren.
Generell:
echo .*
).quelle
chown -R luca:luca /myfolder/.[^.]*
denke ichecho .*
ist eine gute Möglichkeit, die Erweiterung auszuprobieren. Es zeigt Ihnen genau, was die Shell sieht.ls .*
kann etwas verwirrender sein, da es in Verzeichnissenls -d .*
echo .*