il sudo chown fallisce con un'operazione non consentita


8

Ho trovato domande simili qui, ma le risposte fornite a quelle domande non risolvono il mio problema.

Se lo faccio:

sudo chown <username> main.m

Ricevo un errore di operazione non consentita.

La soluzione generale agli errori precedenti era:

sudo chflags nouchg main.m

per cancellare una bandiera di blocco. Tuttavia, dopo aver fatto questo, non riesco ancora a chown il file. Ho anche provato:

chflags noschg main.m

in modalità utente singolo senza fortuna - Ricevo un errore di operazione non consentita.

Se qualcuno ha qualche pensiero, sarei interessato.


Qual è la cosa sottostante che stai cercando di fare? Forse c'è un motivo per cui quel file ha un lucchetto.
Tamara Wijsman,

Quindi posso usarlo come dati di test senza inserire il codice in uno strumento di supporto sicuro, che richiede un lavoro extra per il debug - non impossibile, ma abbastanza fastidioso che se posso modificare gli attributi del file, quindi uno strumento di supporto sicuro non è necessario, ciò renderebbe le cose un po 'più facili. Considerando che si tratta solo di dati di test che sono stati creati, non vi è più alcun motivo valido per avere un blocco.
ericg,

1
Su quale tipo di filesystem è il file? Non stai cercando di utilizzare chownsu un filesystem NTFS / FAT, vero?
Zoredache,

@ericgorr: la maggior parte è sopra la mia testa; Non sono consapevole di cosa sia esattamente uno strumento di supporto sicuro. Ma come dici tu, sono solo i dati di test che sono stati creati; hai chiuso correttamente il file di prova nel tuo codice?
Tamara Wijsman,

@Tom uno strumento di supporto è il modo in cui OS X offre a un'applicazione privilegi elevati mantenendo i privilegi, quindi se un'app vuole modificare un file sicuro, ad esempio, dice allo strumento di supporto (autorizzato) di modificarlo. Immagino che ericgorr voglia evitare di elevare la sua applicazione o qualcosa per evitare il rigoroso debugging che ne deriva.
Vervious,

Risposte:


8

File Mac possono essere protetti in quattro tre modi diversi che io sappia:

  1. Proprietà e autorizzazioni Unix standard come r / w / x per utente / gruppo / altri che vedi con ls -le risolvi con chown(1)e chmod(1).
  2. File flag come uchge schgche vedi ls -lOe risolvi con chflags(1).
  3. I vecchi metadati del Finder "Blocca bit" con cui vedi GetFileInfo filename. Puoi anche vedere la presenza dei metadati del Finder, ma non il suo significato, con ls -l@. Puoi risolverlo con SetFile(1). Non importa, questo è ora mappato alla uchgbandiera.
  4. Elenchi di controllo di accesso (ACL) visualizzati ls -lee risolti con gli argomenti relativi agli ACL chmod(1).

Quindi vediamo cosa succede con il tuo file combinando tutte quelle bandiere per ls:

ls -lO@e main.m

Sembra che tu sappia già come gestire il n. 1 e il n. 2.

Se vedi un ACL (# 4), puoi risolverlo con gli argomenti relativi ad ACL chmod(1).

Se sei ancora sconcertato, aggiorna la tua risposta con l'output di quel lscomando combinato che ho suggerito sopra, in modo da poter vedere cosa sta succedendo.


Il problema sembra riguardare gli ACL. Trovo interessante che sudo non ne abbia uno in giro. Inoltre, chmod -R -a # 0 * ha rimosso gli ACL dalla maggior parte dei file nella gerarchia, ma non è riuscito a rimuoverli da alcuni - l'uso di sudo con chmod non ha aiutato.
ericg,
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.