Do 'sudo' e 'su' appartengono alla sicurezza basata sulle capacità?

4

In Linux, fai sudo e su appartengono a Sicurezza basata su capacità ?

Ad esempio, quando si modifica un file di sistema, di solito abbiamo bisogno di sudo o su per passare temporaneamente alla radice utente. Questo esempio appartiene alla sicurezza basata sulle funzionalità o agli anelli di protezione ? Questo esempio ha bisogno di qualche chiamata di sistema al kernel, o solo al privilegio di root dell'utente, o entrambi?

Quali sono altri approcci in Linux che appartengono alla sicurezza basata sulle capacità?

Sono sudo e su l'unico approccio che appartiene alla sicurezza basata sulle capacità?

    
posta Tim 02.09.2014 - 16:13
fonte

2 risposte

6

In effetti, i programmi sudo e su non sono parti di nessuno dei due modelli di sicurezza per diversi motivi.

  1. Gli anelli di protezione si riferiscono alle autorizzazioni di accesso alla memoria / CPU e nello spazio utente l'unico accesso è ai file.
  2. Le capacità si riferiscono ai permessi di processo e come programmi indipendenti sono un processo separato rispetto al chiamante e non ereditano né cedono alcuna delle loro funzionalità in poi.
  3. Sono programmi software indipendenti che non sono influenzati o influenzano il sistema operativo in alcun modo.

Alcuni sfondi potrebbero essere rilevanti qui:
In Unix e Linux ci sono due livelli di permessi: utente standard e superutente (di solito chiamato root).
L'utente standard ha accesso solo ai file per i quali ha le autorizzazioni, per proprietà, appartenenza al gruppo o ACL.
Il superutente ha le autorizzazioni per tutto (ignoreremo cose come SELinux e simili per questa risposta) senza limiti all'interno dello spazio utente .

Questo presenta un ostacolo importante da superare, poiché un utente standard non ha accesso ai file di sistema come si può eseguire qualcosa come una modifica della password? Per cambiare la password, l'utente deve scrivere su / etc / passwd o sul file shadow (la sua posizione varia tra i diversi gusti di Unix).

Per supportare questo e altri casi simili, i sistemi Unix hanno introdotto un modo per concedere permessi speciali chiamati bit suid. Questo è un po 'nel filesystem che quando impostato su un eseguibile gli consente di ottenere i privilegi del proprietario del file piuttosto che l'utente chiamante.

Sudo e Su usano questo meccanismo per consentire a un utente di impostare le sue autorizzazioni effettive a quelle di qualcun altro (di solito il superutente, ma non sempre) in modo che possano eseguire normali programmi che non hanno il loro flag suid impostato, come utente diverso da quello in cui hanno effettuato l'accesso.

    
risposta data 08.09.2014 - 10:01
fonte
2

In Linux, sudo e su appartengono NEITHER to capability-based security,NOR to Protection Rings !

Sicurezza basata sulle capacità sono un software o un programma specifico con un livello minimo di implementazione (sudo e su non condividono alcuna capacità e hanno e sono molto lontani dal principio del privilegio minimo!), mentre Anelli di protezione applica tutto direttamente dal livello del processore / CPU (sudo e su non ha nulla a che fare con il processore o l'architettura gerarchica)!

Sudo è usato per eseguire un particolare comando con permessi di root. La cosa interessante è che quando usi sudo per un particolare comando, il sistema ti chiede la password dell'utente corrente. Una volta inserita la password, il comando viene eseguito con i privilegi di root.

Su è usato per passare a qualsiasi account utente. Il sistema richiede la password corrispondente all'utente commutato. Se su viene utilizzato senza alcuna opzione, viene eseguito un passaggio all'account utente root. In questo caso, il sistema richiede la password dell'utente root.

For example, when editing a system file, we usually need sudo or su to temporarily switch to user root. Does this example belong to capability-based security, or to protection rings?

Non passiamo alla root dell'utente, ma solo il nostro accesso / privilegio a determinate azioni specifc è aumentato ed eseguito con i privilegi di root. Il processo verrebbe comunque eseguito nello stesso spazio utente, con la sola differenza che al privilegio è stato concesso quello di root! In realtà, tutte queste cose di accessibilità sono mappate su /etc/sudoers file in cui l'accesso a ciascuna delle attività come l'esecuzione di determinate applicazioni, la modifica delle impostazioni di sistema, ecc ... sono elencate per ogni sudoer. Non tutti gli utenti sono tenuti nell'elenco di sudoers, potrebbero esserci diversi utenti esclusi da questo per la sicurezza del sistema!

Quindi ogni volta che eseguiamo sudo OR su , c'è una chiamata di sistema al kernel, cioè, setuid() chiamata di sistema viene invocata al kernel Linux e quindi l'uid dell'utente è impostato a 0 (quello di root) e, quindi, viene visualizzato # , l'intera operazione viene eseguita nello stesso spazio utente dell'utente e nella modalità utente e non nello spazio utente di root !!!

    
risposta data 06.09.2014 - 09:23
fonte

Leggi altre domande sui tag