2011-05-04 20:42:49 +0000 2011-05-04 20:42:49 +0000
69
69

Perché chown riporta "Operazione non consentita" su OS X?

Sto cercando di fare quanto segue sul mio Mac (10.6.7):

sudo chown myusername:wheel ./entries

ma Unix/Mac restituisce “Operation not permitted”. Quando faccio ls -lash il file colpevole, appare come segue:

8 -rwxrwxrwx 1 myusername staff 394B Apr 26 23:26 entries

Ho provato sudo e sudo su; niente funziona. Qualche idea su cosa c'è?

Sto provando a chmod file che ho copiato dalla mia vecchia macchina Ubuntu. La maggior parte dei file sono stati chmod con successo in modo ricorsivo; solo questo è bloccato e non capisco perché.

Risposte (7)

91
91
91
2012-12-12 21:58:23 +0000

Sì, Mac ha molti miglioramenti a Unix nell'area dei file. Ignorando l'intera cosa resource fork che non è più molto usata, ci sono:

  • i permessi standard di Unix ugo rwx e così via. Si applicano i normali strumenti di Unix.
  • ACL, visualizzabili con ls -le e modificabili con chmod [-a | +a | =a].
  • File flags visualizzabili con ls -lO (Oh maiuscolo, non zero) e modificabili con chflags.
  • attributi estesi , visualizzabili con ls -l@ (solo chiavi di attributo) e visualizzabili e modificabili con xattr. (Usa xattr -h per aiuto se man xattr non ti dà nulla.)
  • A partire da OS X 10.11 “El Capitan”, * System Integrity Protection ** (SIP) protegge ulteriormente alcuni file dalle modifiche dei processi ordinari, anche quando usi sudo per funzionare come root. I file protetti da SIP saranno elencati da ls -lO come aventi il flag restricted e/o saranno elencati da ls -l@ come aventi l'attributo com.apple.rootless.

Vi possono essere negate operazioni su un file a causa di permessi Unix, ACL, flag di file, o SIP. Per sbloccare completamente un file:

sudo chmod -N file # Remove ACLs from file
sudo chmod ugo+rw file # Give everyone read-write permission to file
sudo chflags nouchg file # Clear the user immutable flag from file
sudo chflags norestricted file # Remove the SIP protection from file
sudo xattr -d com.apple.rootless file # Remove SIP protection from file

Se la System Integrity Protection (SIP) è abilitata, sudo chflags norestricted e sudo xattr -d com.apple.rootless restituiranno anche un errore “Operation not permitted”. Per cancellare il flag e/o l'attributo è necessario avviare in macOS Recovery ed eseguire i comandi dal terminale (potrebbe essere necessario usare prima Utility Disco per sbloccare e montare l'unità di avvio, poi ricordarsi che i file saranno sotto /Volumes/Macintosh HD o qualunque sia il nome dell'unità di avvio) oppure disabilitare del tutto SIP e poi riavviare e i comandi dovrebbero funzionare. Siate consapevoli, tuttavia, che i futuri aggiornamenti del sistema operativo probabilmente ripristineranno il flag restricted e l'attributo com.apple.rootless a qualsiasi file da cui lo avete rimosso.

_ Disabilitare SIP non è raccomandato _ in quanto rimuove molta protezione contro malware e danni accidentali, inoltre non è necessario quando si può semplicemente rimuovere la protezione su una base per file. Se disabilitate SIP, riabilitatelo quando avete finito di fare cambiamenti.

Nota che se ls -lO mostra che il flag schg è impostato, devi entrare in modalità single-user per disinserirlo. Non mi addentrerò in questo argomento qui, poiché ci sono domande più grandi sul perché il file ha quel flag impostato e perché state cercando di incasinarlo e quali saranno le conseguenze.

18
18
18
2011-06-08 17:47:37 +0000

Ho avuto lo stesso problema. Si è scoperto che i file incriminati erano contrassegnati come “Bloccati” dal sistema operativo. Ho trovato questa soluzione e ha risolto i problemi in pochi secondi: http://explanatorygap.net/2005/07/10/unlocking-files-recursively-from-the-command-line/

Sembra che il comando rm sia cambiato in Tiger in modo tale che se si usa rm -Rf con privilegi elevati, sbloccherà automaticamente i file.

In OS X prima di Tiger: find /Volumes/Transit -flags +uchg -print0 | xargs -0 chflags nouchg

In OS X dopo Tiger: sudo rm -Rf foldername/

Inoltre, anche dopo OS X 10.4, ci possono essere flag di metadati dei file come uchg e uappnd, che impediscono qualsiasi modifica dei permessi o della proprietà dei file. chflags può rimuovere i flag. Alcuni degli attributi/metadati dei file e come sono gestiti da diversi strumenti di copia sono qui .

12
12
12
2015-09-30 23:09:40 +0000

In OS X 10.11 (El Capitan), questo può anche essere causato dalla nuova funzione Rootless. Vedere questa risposta per una spiegazione.

In breve, per certe directory importanti, non c'è modo di modificarle - sia che si usi sudo, chown o chmod. Questo riguarda la directory /usr, (anche se ti è permesso modificare /usr/local).

Per modificare una directory protetta da Rootless, devi disabilitare Rootless . E, naturalmente, riabilitatelo dopo aver fatto le vostre modifiche, perché è un importante miglioramento della sicurezza.

12
12
12
2014-08-21 17:30:15 +0000

Ho avuto lo stesso problema con Crashplan.app.

Tutte le soluzioni elencate qui non mi avrebbero aiutato, ma questa ha fatto il trucco http://forums.macrumors.com/showthread.php?t=1546163

Devi cambiare i flag immutabili di sistema e utente:

Fai questo per vedere quali flag sono attivi sul tuo file/cartella:

ls -lhdO MyFile

La risposta potrebbe essere come questa:

drwxrwxr-x 3 root admin schg,uchg 102B Apr 8 2013 MyFile

schg , uchg sono quei flag immutabili. Uno per il sistema e uno per l'utente. Per rimuoverli, fate come segue:

chflags noschg CrashPlan.app # this removes system immutable flag
chflags nouchg CrashPlan.app # this removes the user immutable flags

Poi, almeno per me, il file è sbloccato e si può cancellare!

5
5
5
2011-05-04 21:02:23 +0000

Dopo un sacco di lotte, ecco cosa ho dovuto fare per risolvere il problema:

  • Ho spostato il file a ~/Desktop
  • sudo chown myusername:staff ./entries
  • Riportare il file nella sua posizione originale non ha funzionato (operazione non consentita, di nuovo), quindi…
  • sudo rm ./entries
  • sudo mv ~/Desktop/entries ./entries
4
4
4
2013-09-19 22:49:53 +0000

Ho avuto lo stesso problema con la mia cartella home. Alla fine ho solo usato finder in questo modo:

Vai -> Computer -> il tuo disco -> Utenti -> il tuo nome utente -> click destro -> Ottieni informazioni

Ho trovato che era bloccata, probabilmente l'ho fatto in passato e l'ho dimenticato. Ho deselezionato la casella di controllo bloccata e il problema è stato risolto.

Posso raccomandare di usare ‘Ottieni informazioni’ da finder per affrontare questo tipo di problemi.

(OS X 10.8.3)

1
1
1
2015-03-23 15:28:32 +0000

Assicurati che sia il file che la sua cartella madre siano sbloccati

Stavo affrontando un problema simile quando cercavo di eliminare un file di firma e-mail di Mac Mail. Non potevo eliminarlo finché non avevo sbloccato il file e la sua cartella madre.