Risposte:
Le autorizzazioni estese come gli elenchi di controllo di accesso impostati da setfacl
e i flag di capacità impostati da setcap
vengono memorizzati nello stesso posto delle autorizzazioni tradizionali e impostano i flag [ug] id impostati da chmod
: nell'inode del file.
(Possono effettivamente essere archiviati in un blocco separato sul disco, perché un inode ha una dimensione fissa che ha spazio per i bit di autorizzazione tradizionali ma non per le autorizzazioni estese potenzialmente illimitate. Ma questo è importante solo in rari casi, come dover attenzione che setcap
potrebbe esaurire lo spazio su disco. Ma chmod
potrebbe anche esaurire lo spazio su disco in un sistema che utilizza la deduplicazione!)
GNU ls non visualizza gli attributi setcap di un file. Puoi visualizzarli con getcap
. Puoi elencare tutti gli attributi estesi con getfattr -d -m -
; l'attributo setcap viene chiamato security.capability
ed è codificato in un formato binario che getcap
decodifica per te.
setcap imposta le capacità dei file che sono archiviate nell'attributo esteso del filesystem. Questi sono spiegati in man 7 capabilities
:
I set di funzionalità del file sono memorizzati in un attributo esteso (vedere setxattr (2)) denominato security.capability.
È possibile controllare le capacità di un processo in esecuzione esaminando i campi CapInh / CapPrm / CapEff in /proc/PID/status
. Vedi la mia risposta a " Come impostare le capacità con il comando setcap? " Per una spiegazione su come le capacità vengono applicate al processo in exec.
/usr/bin/sleep
e dai le capacità a questa copia.