Come cambiare il proprietario di una directory


14

EDIT : il problema era che Apple utilizza le autorizzazioni per contrassegnare i backup e impedisce di modificarli (probabilmente una funzione di sicurezza). Usando chmod -RN <dir>ho rimosso i dati ACL da tutte le cartelle con dati importanti e ciò mi ha permesso di diventare il proprietario e applicare le autorizzazioni appropriate.

Domanda originale
Ho un backup estremamente grande (> 700 GB) che ora ha le autorizzazioni sbagliate (il mio UID è cambiato durante un'installazione pulita, una lunga storia) e ho bisogno di cambiarle. L'opzione che richiede tempo è di passare manualmente attraverso ogni cartella e modificare le autorizzazioni, ma ciò richiederà secoli.

Voglio usare chownper diventare il proprietario di tutti i miei dati importanti e quindi utilizzare chmod 700su tutte quelle cartelle per dare rwxautorizzazioni solo a me.

La soluzione ideale è un metodo di utilizzo findper cercare ricorsivamente cartelle corrispondenti a una regex (la mia attuale è .*/[DCV].*|Pictures|M[ou].*) e quindi rendere il mio UID il proprietario e impostare le autorizzazioni su 700.

La parte importante che non riesco a cogliere:
tuttavia, quando provo a correre chown Me DirectoryNameottengo chown: DirectoryName: Operation not permitted.

Tutto ciò che trovo è legato alla modifica delle autorizzazioni di un file e non di una directory. Forse sto guardando questo nel modo sbagliato?
Qualcosa mi dice che non esiste un modo per dare il mio UID rwxe ---a tutti gli altri.

Come posso raggiungere questo obiettivo? Sto eseguendo Mac OS X 10.10.3.

So che questo è un forum UNIX / Linux (e sto correndo Mac), ma questa domanda è molto di più su come utilizzare la shell, chown, chmod, e le autorizzazioni e le eventuali soluzioni pubblicati qui sarà applicabile a qualsiasi sistema operativo basato su UNIX. Sarebbe preferibile se le soluzioni inviate riapparissero i miei backup più vecchi in Time Machine.

Grazie a tutti coloro che hanno prontamente risposto, ma chownper qualche motivo non sembrano lavorare sulle directory. È .sparsebundlerilevante il fatto che questa sia un'immagine disco su un'unità di rete? Ho pensato che sarebbe stato lo stesso di qualsiasi unità esterna.


Che tipo di unità di rete? Se è NFS, ci sono buone probabilità che venga esportato con root_squashabilitato, quindi non sarai in grado di eseguire operazioni solo root come chowndal client.
Toby Speight,

È un HDD all'interno di una Apple Time Capsule. Essenzialmente è un disco protetto da password all'interno di una stazione base WiFi. L'unica differenza è che l'HDD è collegato al computer tramite Ethernet. In realtà esiste una porta USB ma non l'ho mai usata.
Arc676,

Altrimenti, lo standard find . -user $other_uid -print0 | sudo xargs chown $USERdovrebbe funzionare.
Toby Speight,

Quale filesystem di rete? df -hT <dirname>dovrei dirtelo.
Toby Speight,

@TobySpeight nondf -hT <dir> fornisce alcun output per a) la directory principale dell'HDD di rete b) l'immagine del disco all'interno dell'HDD di rete c) qualsiasi cartella sull'HDD di rete. Forse il comportamento che intendevi è implementato diversamente su Mac e su Linux?
Arc676,

Risposte:


23

Potrei aver frainteso. Ma puoi usare ricorsivamente chmod e chown ad es.

chown -R username:username /path/directory

Per applicare in modo ricorsivo l'autorizzazione 700 è possibile utilizzare:

chmod -r 700 /path/directory

Naturalmente quanto sopra è per Linux, quindi non sono sicuro se mac osx è lo stesso.

EDIT: Sì, scusa, ho dimenticato di dire che devi essere root per chown qualcosa, ho solo pensato che tu sapessi questo ... il mio male.


1
Mac OS utilizza la stessa sintassi. Per eseguire il comando come root, il modo più semplice su un Mac è di prefissarlo sudo, quindi sudo chmod(ti verrà chiesta una password con accesso di Amministratore).
mjturner,

2

prova come root

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

dove

  • -type d si applica solo a dir
  • -name ... la tua regexp
  • -exec chown Me {} \; usa chown su find dir.

devi essere root per chown.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.