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


65

Sto provando a fare quanto segue sul mio Mac (10.6.7):

sudo chown myusername:wheel ./entries

ma Unix / Mac sta restituendo "Operazione non consentita". Quando ho ls -lashil file colpevole, si presenta come segue:

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

Ho provato sudoe sudo su; niente funziona. Qualche idea che succede?

Sto provando a chmodfile che ho copiato dalla mia vecchia scatola di Ubuntu. La maggior parte dei file è stata pubblicata con successo in chmodmodo ricorsivo; solo questo è bloccato e non capisco perché.


1
Ci hai provato sudo chgrp wheel ./entries?
squircle

1
Esegui un controllo del file system. Apri Utility Disco, seleziona il volume e fai clic su Verifica disco , quindi, se necessario, Ripara disco .
Daniel Beck

Assicurati che il file non sia bloccato in Finder (nessun simbolo di blocco sull'icona). Per modificarlo, apri la finestra di dialogo Ottieni informazioni e deseleziona Bloccato .
Daniel Beck

Se si tratta di un volume "esterno" (ovvero non del volume di sistema), potrebbe essere necessario rimuovere l'opzione "Ignora proprietà su questo volume". (Vedere nella parte inferiore della finestra Ottieni informazioni per il volume stesso).
mivk,

Risposte:


85

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

  • le autorizzazioni Unix standard ugo rwx e così via. Si applicano i normali strumenti Unix.
  • ACL , visualizzabili ls -lee modificabili con chmod [ -a | +a | =a ].
  • flag di file visualizzabili con ls -lO(Capitale oh, non zero) e modificabili con chflags.
  • attributi estesi , visualizzabili con ls -l@(solo chiavi attributo) e visualizzabili e modificabili con xattr. (Utilizzare xattr -hper aiuto se man xattrnon ti dà nulla.)
  • A partire da OS X 10.11 "El Capitan", System Integrity Protection (SIP) protegge ulteriormente alcuni file dalle modifiche dei normali processi, anche quando si utilizza sudoper eseguire as root. I file protetti da SIP verranno elencati ls -lOcon il restrictedflag e / o elencati ls -l@con l' com.apple.rootlessattributo.

È possibile negare le operazioni su un file a causa di autorizzazioni 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 protezione dell'integrità del sistema (SIP) è abilitata sudo chflags norestrictede sudo xattr -d com.apple.rootlessrestituirà anche un errore "Operazione non consentita". Per cancellare il flag e / o l'attributo è necessario avviare macOS Recovery ed eseguire i comandi dal Terminale (potrebbe essere necessario innanzitutto utilizzare Utility Disco per sbloccare e montare l'unità di avvio, quindi ricordare che i file saranno sotto /Volumes/Macintosh HDo qualunque sia il tuo avvio il nome dell'unità) o disabilitare SIP del tutto, quindi riavviare e i comandi dovrebbero funzionare. Tenere presente, tuttavia, che i futuri aggiornamenti del sistema operativo ripristineranno probabilmente il restrictedflag e l' com.apple.rootlessattributo a tutti i file da cui è stato rimosso.

La disabilitazione di SIP non è consigliata poiché rimuove molta protezione da malware e danni accidentali, inoltre non è necessario quando è possibile rimuovere semplicemente la protezione in base al file. Se disabiliti SIP, riattivalo al termine delle modifiche.

Si noti che se ls -lOmostra che il schgflag è impostato, è necessario entrare in modalità utente singolo per disinserirlo. Non entrerò in questo qui perché ci sono domande più grandi sul perché il file ha quel flag impostato e perché stai cercando di rovinarlo e quali saranno le conseguenze.


7
Aggiungendo a questo, altri flag potrebbero impedire di modificare i file. Nella mia sceneggiatura ho inseritosudo chflags -R nouchg,noschg,nouappnd,nosappnd,noopaque,dump .
djjeck l'

1
Nota: se qualcosa ha il flag "immutabile", la casella di controllo Bloccato in Ottieni informazioni verrà selezionata e disattivata. "sudo chflags nouchg" lo risolve.
Foo Bar,

1
Non ho potuto fare l' -Ne ugo+rwentrambe le cose contemporaneamente (ho avuto Failed to clear ACL on file ugo+rw: No such file or directory), ma in esecuzione loro bene lavorato singolarmente. Se si desidera ricorsivo, -Rdeve essere il primo argomento.
owenfi,

3
Si noti che la protezione dell'integrità del sistema (senza root) può anche causare questo su El Capitan e versioni successive. Per risolverlo, avvia in Recovery Mode ( Cmd-R), apri Terminal ed esegui csrutil disable, quindi riavvia (per riattivare, usa csrutil enable).
Erwin Wessels, il

Grazie ... non avevo idea dei file flags. Ora capisco perché dicesseoverride rwxrwxrwx huttarl/staff uchg for green.html?
LarsH,

18

Ho avuto lo stesso problema. Si scopre che i file offensivi sono stati contrassegnati come "bloccati" dal sistema operativo. Ho trovato questa soluzione e ho risolto i problemi in pochi secondi:

http://explanatorygap.net/2005/07/10/unlocking-files-recursively-from-the-command-line/

Sembra che il rmcomando sia cambiato in Tiger in modo tale che se lo usi rm -Rfcon 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, potrebbero essere presenti flag di metadati come uchge uappnd, che impediscono qualsiasi modifica delle autorizzazioni o della proprietà dei file. chflagspuò rimuovere le bandiere. Alcuni degli attributi / metadati del file e come sono gestiti da diversi strumenti di copia sono qui .


sudo rm -Rf foldername/sta funzionando perfettamente su OSX Mountain Lion
Aryo il

5
@Aryo: rmelimina la directory. C'è un modo per sbloccare tutto senza eliminarlo? Quando guardo uchgnon è impostato e posso accenderlo e spegnerlo di nuovo come previsto (con chflags [no]uchg), ma ciò non ha alcun effetto sull'icona del lucchetto nel Finder o sulla mia capacità di farlo chown.
orome,

12

Ho avuto lo stesso problema con Crashplan.app.

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

Devi cambiare il sistema e i flag dell'utente immutabili:

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

ls -lhdO MyFile

La risposta potrebbe apparire così:

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

schg , uchg sono quelle bandiere immutabili. Uno per il sistema e uno per l'utente. Per rimuoverli, procedi come segue:

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

Quindi, almeno per me, il file è sbloccato e puoi eliminarlo!


Fantastico, ho dovuto chflagsusare sudoperò, ma ha senso
Felipe,

Ho avuto lo stesso problema con CrashPlan.app (avevo drwxrwxr-x@ 3 _BGMXPCHelper admin schg 96B 9 Jan 2018 CrashPlan.app) e questa era l'unica soluzione che mi ha permesso di eliminarlo, grazie!
webeno,

12

In OS X 10.11 (El Capitan), ciò può anche essere causato dalla nuova funzionalità Rootless . Vedi questa risposta per una spiegazione.

In breve, per alcune directory importanti, non c'è modo di modificarli - se usate sudo, chowno chmod. Ciò influisce sulla /usrdirectory (anche se è consentito modificare /usr/local).

Per modificare una directory protetta da Rootless, è necessario disabilitare Rootless . E, naturalmente, riattivalo dopo aver apportato le modifiche, perché è un importante miglioramento della sicurezza.


1
Wow. Mi ha fatto impazzire. In qualche modo avevo bisogno di copiare qualcosa in / usr / lib che altrimenti non si trovava in / usr / local / lib (non chiedermi perché). E quello ha funzionato.
qwerty_so,

4
In realtà, non è necessario disabilitare del tutto Rootless, è sufficiente avviare la modalità di ripristino (cosa che si dovrebbe fare comunque per disabilitare Rootless) e apportare le modifiche desiderate dal Terminale lì.
Old Pro

6

Dopo molte lotte, ecco cosa dovevo fare per risolvere il problema:

  • Spostato il file in ~/Desktop
  • sudo chown myusername:staff ./entries
  • Lo spostamento del file nella posizione originale non ha funzionato (operazione non consentita, di nuovo), quindi ...
  • sudo rm ./entries
  • sudo mv ~/Desktop/entries ./entries

4

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

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

Ho scoperto che era bloccato, probabilmente l'ho fatto in passato e ho dimenticato. Deselezionata la casella di controllo bloccata, problema risolto.

Posso consigliare di utilizzare "Ottieni informazioni" dal Finder per affrontare questo tipo di problemi.

(OS X 10.8.3)


Questo mi ha aiutato a sbloccare .isodalla Virtual Box glitch.
Nakilon,

1

Assicurarsi che sia il file che la cartella principale siano sbloccati

Stavo affrontando un problema simile durante il tentativo di eliminare un file di firma e-mail di Mac Mail. Non ho potuto cancellarlo finché non avessi sbloccato il file e la cartella principale.

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.