la rimozione dell'autorizzazione di scrittura non impedisce a root di scrivere sul file


31

Ho appena notato sulla mia macchina Ubuntu (filesystem ext3) che rimuovere i permessi di scrittura da un file non impedisce a root di scrivere su di esso.

È una regola generale delle autorizzazioni per i file UNIX? O specifico per Ubuntu? O una configurazione errata sulla mia macchina?

# touch abc
# chmod ugo-w abc
# python
Python 2.6.4 (r264: 75706, 7 dic 2009, 18:45:15) 
[GCC 4.4.1] su linux2
Digita "aiuto", "copyright", "crediti" o "licenza" per ulteriori informazioni.
>>> apri ('abc', 'w'). write ('AAA \ n')
>>> 
# cat abc
AAA

La scrittura nel file non riesce (come previsto) se lo faccio dal mio normale account utente.

  1. Questo comportamento è normale?

  2. Esiste un modo per impedire a root di scrivere accidentalmente su un file? (Preferibilmente usando i normali meccanismi del filesystem, non AppArmor, ecc.)

Per favore, insegnami qualcosa che sicuramente non capisco.

NOTA: capisco che root ha il controllo totale sul sistema e può, ad esempio, modificare le autorizzazioni su qualsiasi file. La mia domanda è se le autorizzazioni attualmente impostate vengono applicate al codice in esecuzione come root . L'idea è l'utente root che impedisce a se stesso di scrivere accidentalmente su un file.

NOTA: capisco anche che non si dovrebbe accedere come root per le normali operazioni. Ho appena notato questo comportamento e te lo sto chiedendo.

Risposte:


46

1) Questo è un comportamento normale. root ha sempre accesso rw su tutti i file.

2) Puoi proteggere un file anche dalla radice (non un'azione deliberata, ma accidentale, comunque) usando

chattr +i filename.ext

Cioè "modifica attributi aggiungi immutabile". Per rimuovere la protezione:

chattr -i filename.ext

dai un'occhiata man chattrper maggiori informazioni


@brice: molte grazie. affronta direttamente la mia domanda. non sapevo di chattr.
laramichaels,

il mio sistema sembra aver bisogno dell'accesso root per funzionare chattr. esiste un modo in modalità utente per impostare tali attributi?
Quack Quixote

1
... sebbene sia un'ottima risposta alla domanda, "può rootproteggere un file così bene anche se non può cancellarlo"!
Quack Quixote

4
Più accuratamente (nel caso di Linux, comunque), root ha la CAP_DAC_OVERRIDEcapacità che gli consente di ignorare ACL e permessi.
gravità

1
Cordiali saluti, l'equivalente di questo su OS X è sudo chflags <s|u>chg <file>renderlo immutabile per il sistema o l'utente, rispettivamente, e sudo chflags no<s|u>chg <file>per annullare il flag immutabile per il sistema o l'utente, rispettivamente.
PIL 2

3
  1. Sì, questo è normale. La radice è dio.

  2. Sì, ci sono modi per impedire a root di sovrascrivere i file.

    • Impostare il bit immutabile con chattr( +iimposta, -iripristina). Richiede l'accesso root, funziona solo su ext2 / ext3 (presumibilmente anche ext4), ma è altrimenti pratico.
    • Non eseguire app come root. Nessun privilegio di root, nessun file di sovrascrittura. Utilizzare sudoper accedere alle funzioni di sistema.
    • Smonta il filesystem. Nessun fs montato, nessun file di sovrascrittura. [*]
    • Spegni il computer. Nessuna elettricità, nessun file di sovrascrittura.

Questi metodi seguono logicamente dal n. 1. Come puoi vedere, gli ultimi due metodi non sono generalmente utili, allo stesso modo in cui la protezione di Windows dai virus scollegando la rete non è generalmente utile. Questo è il motivo per cui root è pericoloso. [+]

[*] Ovviamente scontando la possibilità di "accidentalmente" scrivere direttamente sul dispositivo a blocchi. Sì, root può farlo. Sì, puoi impedirlo: disconnetti il ​​dispositivo.

[+] Questo è anche il luogo da cui provengono i miti di BOfH. Non sono tutti miti.


@ ~ ciarlatano: il metodo di brice è molto più pratico dei tre che elenchi. :)
laramichaels

@ ~ ciarlatano: la mia domanda ha chiarito che capisco i problemi con l'esecuzione dei comandi come root.
laramichaels,

3

È inoltre possibile limitare l'accesso ai file per l'utente root, utilizzando il kernel Linux "Funzionalità": http://www.securityfocus.com/infocus/1400

C'è anche la possibilità di usare SE-Linux o qualche altra patch del kernel per rendere alcuni file immutabili anche al root.


0

Penso che fintanto che root è il superutente e che può fare qualsiasi cosa, non puoi rimuovergli alcun permesso, anche se sei il root. Dovrebbe essere la volontà del root di impedirsi di fare o meno un'operazione (come scrivere in un file o aprire un'applicazione).

Quindi no, è probabile che tu disattivi solo l'account root, per impedirne un cattivo utilizzo.

Saluti

[nota a se stesso: sarete umili ... forse sbaglierete]

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.