Operazione non consentita su root - El Capitan (rootless disabilitato)


236

Sto cercando di spostare qualcosa in / usr / bin su OS X El Capitan. Ho disabilitato il rootless usando i seguenti comandi:, sudo nvram boot-args="rootless=0"; sudo rebootma continuo a ricevere lo stesso errore:

MacBook-Air:~ Mark$ sudo cp class-dump /usr/bin
Password:
cp: /usr/bin/class-dump: Operation not permitted
MacBook-Air:~ Mark$ sudo mv class-dump /usr/bin
mv: rename class-dump to /usr/bin/class-dump: Operation not permitted

14
Perché stai provando a mettere class-dump in / usr / bin? Le aggiunte locali appartengono a / usr / local / bin e rootless ti permette di mettere le cose lì ...
Gordon Davisson,

1
Basta creare un alias in ~ / .bash_profile e non impazzire con / usr / bin
Warren P

5
class-dump viene utilizzato direttamente per la programmazione (strumento di reverse engineering - direttamente per la programmazione), quindi il motivo della chiusura non sembra valido. Inoltre, 28 stelle, quasi 40 voti positivi e 90 voti positivi indicano che la domanda è utile.
Vive il

reverse engineering perché viene utilizzato per ottenere un elenco di classi?
marciokoko,

Risposte:


355

NVM. Per chiunque abbia questo problema, è necessario riavviare il Mac e premere ⌘ + R all'avvio. Quindi vai su Utilità> Terminale e digita i seguenti comandi:

csrutil disable
reboot 

Questo è il risultato di System Integrity Protection. Maggiori informazioni qui .

MODIFICARE

Se sai cosa stai facendo e sei abituato a eseguire Linux, dovresti usare la soluzione di cui sopra poiché molte delle restrizioni SIP sono un dolore completo nel culo.

Tuttavia, se sei un armeggiatore / noob / "poweruser" e non sai cosa stai facendo, questo può essere molto pericoloso e stai meglio usando la risposta qui sotto .


2
@Chris, dovrai riavviare nuovamente con CMD + R, aprire il terminale ed eseguire csrutil enable; reboot. Purtroppo il comando non funziona in modalità normale.
Alexander Kachkaev,

7
@AlexanderKachkaev Sì, è quello che ho fatto. Volevo solo sottolineare che chiunque dovrebbe abilitarlo di nuovo dopo aver eseguito le modifiche! In caso contrario, la protezione dell'integrità del sistema viene disabilitata permanentemente, il che può comportare gravi problemi.
Chris,

9
Porterà a gravi problemi solo se rimuovi / modifichi qualcosa che non dovresti rimuovere / modificare. In altre parole, se sai cosa stai facendo, è perfettamente sicuro lasciarlo disabilitato.
Clintm,

16
Chiunque utilizzi l'esecuzione su Linux vorrà probabilmente lasciare questo disabilitato. È un dolore completo nel culo.
mschuett,

3
@Chris non ha senso ammanettarti alla sedia del tuo ufficio per evitare di essere investito da un'auto ... in altre parole ... se sai guardare in entrambi i modi prima di attraversare la strada ... è assolutamente sicuro no ammanettarti a una sedia
Clintm,

254

La soluzione corretta è copiare o installare in /usr/local/binnon /usr/bin. Ciò è dovuto a System Integrity Protection (SIP) . SIP rende /usr/bindi sola lettura ma lascia /usr/localcome lettura-scrittura.

Il SIP non deve essere disabilitato come indicato nella risposta sopra perché aggiunge un altro livello di protezione contro il malware che ottiene l'accesso come root. Ecco una spiegazione completa di ciò che fa SIP e perché è utile.

Come suggerito in questa risposta , non si dovrebbe disabilitare SIP (modalità rootless) "Non è consigliabile disabilitare la modalità rootless! La migliore pratica è installare cose personalizzate solo su" / usr / local "."


8
Questo risolto il mio problema. Grazie per il link! Andare senza root o disabilitare le cose in modalità di recupero sembrava super pericoloso! Sono contento di averlo trovato.
caokey

1
Questo fatto non del tutto fare il trucco per me - ho avuto un po 'di fortuna aliasing (per esempio, nel mio caso) javaper /usr/local/bin/javai miei alias bashrc, dopo che ho fatto il collegamento appropriato in quella cartella come suggerisce questa risposta.
Eli Albert,

Questa risposta ha risolto perfettamente il mio problema. Dovrebbe essere la risposta accettata in quanto non richiede alcuna modifica al sistema e nessun riavvio.
Stephan,

Quindi, questo non lascia spazio a rmnulla /usr/bin/? Capisco che SIP ha il suo scopo, ma voglio rimuovere un eseguibile specifico.
Brad Solomon,

1
Ho /usr/local/binnel mio percorso e openssl 1.0.2n è correttamente collegato a symlink /usr/local/bin/opensslma ogni volta che lo faccio which opensslmostra ancora /usr/bin/opensslquale è la OpenSSL 0.9.8zh 14 Jan 2016versione precedente . Come posso fare in modo che il mio sistema preferisca l' /usr/local/bin/openssluno all'altro?
Francisc0

15

Se vuoi prendere il controllo di /usr/bin/

Sarà necessario riavviare il sistema:

Subito dopo il suono di avvio, tieni premuto Command-R per avviare il Recovery System

Fai clic sul menu Utilità e seleziona Terminale

Digita csrutil disable e premi Invio

Fai clic sul menu  e seleziona Riavvia

Dopo aver eseguito il commit delle modifiche, assicurati di riattivare SIP! Fa molto per proteggere il tuo sistema. (Stessi passaggi sopra tranne tipo: abilitazione csrutil)


0

Se dopo aver chiamato "csrutil disabilitato" il comando non funziona, provare con "sudo" nel terminale, ad esempio:

sudo mv geckodriver /usr/local/bin

E dovrebbe funzionare.

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.