So ändern Sie den Eigentümer eines Verzeichnisses

14

BEARBEITEN : Das Problem war, dass Apple Berechtigungen zum Markieren von Backups verwendet und Sie daran hindert, diese zu ändern (wahrscheinlich eine Sicherheitsfunktion). Durch die Verwendung von chmod -RN <dir>entfernte ich ACL-Daten aus allen Ordnern mit wichtigen Daten. Dadurch konnte ich mich selbst zum Eigentümer machen und die entsprechenden Berechtigungen anwenden.

Ursprüngliche Frage
Ich habe ein extrem großes Backup (> 700 GB), das jetzt die falschen Berechtigungen hat (meine UID hat sich während der Neuinstallation geändert, lange Geschichte) und ich muss sie ändern. Die zeitaufwändige Option besteht darin, die einzelnen Ordner manuell zu durchsuchen und die Berechtigungen zu ändern, dies kann jedoch einige Zeit in Anspruch nehmen.

Ich möchte chownmich selbst zum Eigentümer aller meiner wichtigen Daten machen und dann chmod 700in all diesen Ordnern rwxBerechtigungen nur für mich vergeben.

Die ideale Lösung ist eine Methode, mit findder Sie rekursiv nach Ordnern suchen können, die einer regulären Ausdrucksweise entsprechen (meine derzeitige lautet .*/[DCV].*|Pictures|M[ou].*). Nehmen Sie dann meine UID als Besitzer vor und setzen Sie die Berechtigungen auf 700.

Das Wichtige, was ich nicht begreifen kann:
Wenn ich jedoch versuche zu rennen, chown Me DirectoryNamebekomme ich chown: DirectoryName: Operation not permitted.

Alles, was ich finde, hängt mit dem Ändern der Berechtigungen einer Datei und nicht eines Verzeichnisses zusammen. Vielleicht sehe ich das falsch?
Etwas sagt mir, dass es keine Möglichkeit gibt, meine UID rwxund ---an alle anderen weiterzugeben.

Wie kann ich das erreichen? Ich verwende Mac OS X 10.10.3.

Ich weiß , dass dies ein UNIX / Linux Forum (und ich bin mit Mac) , aber diese Frage ist viel mehr über den Shell verwenden, chown, chmodund Berechtigungen und alle Lösungen , die hier geschrieben wird jedes UNIX-basiertes Betriebssystem anwendbar. Es ist vorzuziehen, wenn die bereitgestellten Lösungen dazu führen, dass meine älteren Sicherungen in Time Machine wieder angezeigt werden.

Vielen Dank an alle, die prompt geantwortet haben, aber chownaus irgendeinem Grund nicht an Verzeichnissen zu arbeiten scheinen. Ist die Tatsache, dass es sich um ein .sparsebundleDisk-Image auf einem Netzwerklaufwerk handelt, relevant? Ich nahm an, dass es dasselbe wie auf jedem externen Laufwerk sein würde.

Arc676
quelle
Was für ein Netzlaufwerk? Wenn es sich um NFS handelt, besteht eine gute Chance, dass es mit root_squashaktivierter Option exportiert wird , sodass Sie keine reinen Root-Vorgänge ausführen können, z. B. chownvom Client aus.
Toby Speight
Es ist eine Festplatte in einer Apple Time Capsule. Im Wesentlichen handelt es sich um eine kennwortgeschützte Festplatte in einer WiFi-Basisstation. Der einzige Unterschied besteht darin, dass die Festplatte über Ethernet mit Ihrem Computer verbunden ist. Es tatsächlich ist ein USB - Anschluss , aber ich habe es nie benutzt.
Arc676
Ansonsten sollte der Standard find . -user $other_uid -print0 | sudo xargs chown $USERfunktionieren.
Toby Speight
Welches Netzwerk-Dateisystem? df -hT <dirname>sollte dir sagen.
Toby Speight
@TobySpeight df -hT <dir>gibt keine Ausgabe für a) das Stammverzeichnis der Netzwerkfestplatte b) das Festplattenabbild innerhalb der Netzwerkfestplatte c) einen beliebigen Ordner auf der Netzwerkfestplatte aus. Vielleicht ist das von Ihnen beabsichtigte Verhalten auf Mac und Linux unterschiedlich implementiert?
Arc676

Antworten:

23

Ich kann falsch verstanden haben. Sie können jedoch rekursiv chmod und chown verwenden, z.

chown -R username:username /path/directory

Um die Berechtigung 700 rekursiv anzuwenden, können Sie Folgendes verwenden:

chmod -r 700 /path/directory

Natürlich ist das obige für Linux, also nicht sicher, ob Mac OSX dasselbe ist.

EDIT: Ja, tut mir leid, ich habe vergessen zu erwähnen, dass du root sein musst, um etwas zu erkennen.

Dakka
quelle
1
Mac OS verwendet dieselbe Syntax. Um den Befehl als root ausführt, ist der einfachste Weg , auf einem Mac es Präfix mit sudo, so sudo chmod(Sie werden nach einem Passwort mit Adminstrator Zugang beantragt werden).
MJTURNER
2

versuchen Sie es als root

 find wherever -type d -name ... -exec chown Me {} \;

wo

  • -type d gilt nur für dir
  • -name ... Ihr regulärer Ausdruck
  • -exec chown Me {} \; benutze chown auf find dir.

Sie müssen root sein, um chown.

Archemar
quelle