GNU/Linux >> Linux Esercitazione >  >> Linux

Come funzionano i permessi sui file per l'utente root?

L'accesso privilegiato a file e directory è effettivamente determinato dalle capacità, non solo dall'essere root o no. In pratica, root di solito ha tutte le capacità possibili, ma ci sono situazioni in cui tutte/molte di esse potrebbero essere abbandonate o alcune potrebbero essere date ad altri utenti (i loro processi).

In breve, hai già descritto come funzionano i controlli di controllo degli accessi per un processo privilegiato. Ecco come le diverse funzionalità lo influenzano effettivamente:

La capacità principale qui è CAP_DAC_OVERRIDE , un processo che può "ignorare i controlli di autorizzazione di lettura, scrittura ed esecuzione dei file". Ciò include la lettura e la scrittura su qualsiasi file, nonché la lettura, la scrittura e l'accesso alle directory.

In realtà non si applica all'esecuzione di file che non sono contrassegnati come eseguibili. Il commento in generic_permission (fs/namei.c ), prima che l'accesso controlli i file, dice che

I DAC di lettura/scrittura sono sempre sovrascrivibili. I DAC eseguibili sono sovrascrivibili quando è impostato almeno un exec bit.

E il codice controlla che ci sia almeno un x bit impostato se stai tentando di eseguire il file. Sospetto che sia solo una funzione utile, per evitare l'esecuzione accidentale di file di dati casuali e ottenere errori o risultati strani.

Ad ogni modo, se puoi ignorare le autorizzazioni, potresti semplicemente creare una copia eseguibile ed eseguirla. (Anche se in teoria potrebbe fare la differenza per i file setuid di un processo era in grado di ignorare i permessi dei file (CAP_DAC_OVERRIDE ), ma non disponeva di altre funzionalità correlate (CAP_FSETID /CAP_FOWNER /CAP_SETUID ). Ma avendo CAP_DAC_OVERRIDE consente la modifica di /etc/shadow e cose del genere, quindi è approssimativamente uguale ad avere comunque un accesso root completo.)

C'è anche il CAP_DAC_READ_SEARCH capacità che consente di leggere qualsiasi file e accedere a qualsiasi directory, ma non di eseguirli o scriverli; e CAP_FOWNER che consente a un processo di fare cose che di solito sono riservate solo al proprietario del file, come cambiare i bit di autorizzazione e il gruppo di file.

L'override dello sticky bit sulle directory è menzionato solo in CAP_FOWNER , quindi sembra che CAP_DAC_OVERRIDE non sarebbe sufficiente ignorarlo. (Ti darebbe il permesso di scrittura, ma di solito nelle directory appiccicose lo hai comunque, e +t lo limita.)

(Penso che i dispositivi speciali qui contino come "file". Almeno generic_permission() ha solo un controllo del tipo per le directory, ma non ho controllato al di fuori di questo.)

Naturalmente, ci sono ancora situazioni in cui anche le funzionalità non ti aiuteranno a modificare i file:

  • alcuni file in /proc e /sys , poiché non sono realmente file
  • SELinux e altri moduli di sicurezza che potrebbero limitare root
  • chattr immutabile +i e aggiungi solo +a flag su ext2/ext3/ext4, entrambi bloccano anche root e impediscono anche la ridenominazione dei file ecc.
  • filesystem di rete, in cui il server può eseguire il proprio controllo di accesso, ad es. root_squash in NFS mappa root su nessuno
  • FUSE, che presumo potrebbe fare qualsiasi cosa
  • montaggi di sola lettura
  • dispositivi di sola lettura

È esattamente come hai notato per i permessi predefiniti:

  • Leggi e scrivi:
    Per impostazione predefinita, l'utente root può accedere a qualsiasi file nel sistema. Puoi rimuovere questo accesso modificando gli attributi come spiegato qui:chattr. Questo è poi collegato alle capacità.

  • Esegui:
    L'utente root non ha il permesso di esecuzione a meno che non sia impostato almeno uno dei bit di esecuzione.


Il myFile.txt è ottenuto da chmod 000 myFile.txt .

0 no permission
1 execute
2 write
3 execute + write
4 read 
5 read + execute
6 read + write
7 all

--------- significa che non ci sono permessi per utente, gruppo e altro.

L'utente root ha un senza restrizioni possibilità di modificare questo file. La lettura/scrittura è concessa. Per eseguire questo file l'utente root deve comunque renderlo eseguibile. (chmod 100 , 010 o 001)


Linux
  1. Come posso specificare il file chiave per sshfs?

  2. Comprensione della proprietà dei file utente nella finestra mobile:come evitare di modificare le autorizzazioni dei volumi collegati

  3. Come posso fare in modo che sudo chieda la password di root?

  4. Come posso scrivere file su una USB senza essere root?

  5. Come posso forzare autorizzazioni specifiche per nuovi file/cartelle sul file server Linux?

Come modificare ricorsivamente le autorizzazioni dei file in Linux

Come decomprimere i file gz in Linux

Come posso correggere i permessi dei miei file?

Come disabilitare l'accesso SSH per l'utente root in Linux?

Come impostare i permessi Linux per la cartella WWW?

Come trovare il file .pid per un determinato processo