Ich versuchte nach chown
innen zu kommen /opt
und chown
sprang aus irgendeinem Grund auf die Eltern zu und verschluckte alles.
Kann jemand vorschlagen, warum / wie dies passieren könnte und wie dies in Zukunft vermieden werden kann? Ein bisschen geht es darum, dass das Ausführen eines Befehls in einem bestimmten Verzeichnis effektiv dazu führen kann, dass er im Stammverzeichnis ausgeführt wird.
ubuntu: /opt > sudo chown -R root:www-data .*
chown: changing ownership of '../var/lib/lxcfs/proc/cpuinfo': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/meminfo': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/stat': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/uptime': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/diskstats': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/swaps': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/devices': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/blkio': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/hugetlb': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/rdma': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/pids': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/freezer': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/cpuset': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/memory': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/perf_event': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/cpu,cpuacct': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/net_cls,net_prio': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/name=systemd': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/unified': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs': No such file or directory
^C
:ubuntu: /opt >
permissions
chown
Herzog Dougal
quelle
quelle
sudo chown -R root:wwwdata /opt
Wie im --help-Dialog ... hat die Verwendung dieser Pipe vielleicht ein Problem verursacht ???.*
Übereinstimmungen..
(das übergeordnete Verzeichnis, das ist/
) - siehe "chmod 777. * -R" chmod übergeordnete Verzeichnisse (..)?cd
minimieren , können Sie entweder in das Stammverzeichnis wechseln und das Leaing / auslassen oder den Befehl mit starten. Dies(
bedeutet, dass der Befehl erst ausgeführt wird, wenn der Abgleich)
eingegeben wurde. Auf diese Weise können Sie Strg-C drücken und aussteigen von einem schweren Fehler (wierm -rf /tmp/foo-install
und drücken Sie Enter anstelle von T).Antworten:
Dies geschah, weil Sie Folgendes verwendet haben:
wenn Sie dies stattdessen hätten verwenden sollen:
Erstens
-R
ist es für alle Verzeichnisse unter dem Zielverzeichnis rekursiv.Außerdem
*
werden alle Dateien und Verzeichnisse unter dem aktuellen Verzeichnis abgeglichen. Als nächstes.*
werden alle Dateien und Verzeichnisse eine Ebene über dem aktuellen Verzeichnis abgeglichen.Um dies in Zukunft zu vermeiden, können Sie
ls
den Pfad mit dem Befehl überprüfen, bevor Sie denchown
Befehl wie in den folgenden Beispielen ausführen :Eine andere Möglichkeit, dies zu vermeiden, besteht darin, immer den vollständigen Pfad zu dem Verzeichnis zu verwenden, in das Sie einen Befehl ausführen möchten.
Hier ist ein Beispiel:
Bearbeiten:
Sie können den folgenden Befehl für
chmod
alle versteckten Dateien oder Verzeichnisse direkt darunter verwenden/opt
(vorausgesetzt, das erste Zeichen nach dem.
, das sie versteckt, ist ein Buchstabe, eine Zahl, ein Bindestrich oder ein Unterstrich, der für die meisten Dateien zutreffen sollte).Sie können überprüfen, welche Dateien dies bewirkt,
chmod
indem Sie den folgenden Befehl ausführen:Der erste Teil des Befehls :
for i in /opt/.[A-Za-z0-9-_]*
sagt , dass für alle die Ergebnisse der glob/opt/.[A-Za-z0-9-_]*
assign jedes Ergebnis der Variablen „i“.Der Glob hier sagt, dass das erste Zeichen sein muss
.
und dass das nächste Zeichen[A-Za-z0-9-_]
ein beliebiges Zeichen sein muss, das AZ oder az oder eine beliebige Zahl von 0 bis 9 oder a-
oder a ist_
.Dadurch werden die Ergebnisse ausschließen
.
und..
die das aktuelle Verzeichnis und das Verzeichnis über dem aktuellen Verzeichnis dar und enthält nur versteckte Dateien und Verzeichnisse.Der zweite Teil des Befehls :
do sudo chmod root:www-data "/opt/$i"
Sagt, dass der Befehl für alle Variablen ausgeführt werden soll, die mit dem aktuellen Wert von übereinstimmen$i
.Der dritte Teil des Befehls :
done
sagt, dass ich fertig bin.Darüber hinaus haben Sie die
-R
Option mitchmod
und die-R
Option ist rekursiv und gilt für alle Verzeichnisse und Dateien.Wenn Sie nur den
chmod
Befehl ohne Optionen verwenden, gilt der Befehl nur für die angegebene Datei oder das angegebene Verzeichnis und nicht rekursiv für Verzeichnisse.quelle
ls
Ausgabe zu analysieren, und ist sehr langsam, während die Antwort verwendet werden sollfind
.**
, und selbst das muss explizit aktiviert werden. IMHO, Sie sollten klarer über die Rolle von sein-R
. (2) Personen wird empfohlen, die Verwendung von Plain zu vermeiden,*
da diese mit den Dateinamen übereinstimmen kann-
, die mit beginnen. Diese werden dann als Optionen interpretiert. sollte dagegen schützen, aber ich bin nicht sicher, ob alle Befehle diese Konvention einhalten. … (Fortsetzung)command
-- *
*
,./*
und es ist sogar/opt/*
nicht möglich, „ Punktedateien “ (.*
) zu finden, es sei denn, diedotglob
Option ist aktiviert. Wie Joshua Besneatte und Ilkkachu sagenchown -R /opt
undchown -R .
besser sind. … (Fortsetzung)Das Shell-Glob
.*
entspricht..
in diesem Fall leider (dem übergeordneten Verzeichnis)/
:Weitere Diskussion finden Sie unter:
quelle
Ihre Probleme kamen, weil alles , was mit einem Punkt beginnt,
.*
übereinstimmt . Der Kontext ist das aktuelle Verzeichnis, da dieser Ausdruck keinen Pfad enthält. Wenn sich also versteckte Dateien oder Ordner wie im aktuellen Verzeichnis befinden, stimmen Sie mit diesen überein. Aber (wie Sie sehen werden, wenn Sie in diesem Ordner laufen ), werden Sie auch mit und übereinstimmen.git
ls -a
.
..
Und
..
natürlich ist es das übergeordnete Verzeichnis, alsochmod -R
rekursiv alles im übergeordneten Verzeichnis.quelle
/opt/.*
würde nicht helfen,/opt/..
ist der gleiche wie..
bei CWD =/opt
..
als Kontext verwendet werden, aber es funktionierte aufgrund des fehlenden Schrägstrichs nicht so ...