Domanda

Voglio scrivere un server che riceve ed esegue il codice per conto dei partiti non attendibili.

Al fine di rendere più sicuro questo voglio il codice da eseguire come un utente che viene creato in esclusiva per l'esecuzione di questo codice e poi cancellato.

Come faccio a concedere a un utente non root il permesso di creare, impersonare e rimuovere altri utenti?

È stato utile?

Soluzione

L'unico modo si potrebbe in teoria fare questo è con un programma proxy che è setuid root (vale a dire, chown root my-proxy-processo;. Chmod 47nn my-proxy-processo e che il programma di proxy setuid si occupa di gestire considerazioni di sicurezza, setuid'ing per l'utente di nome, ecc.

Tuttavia, i problemi di sicurezza con questo dovrebbe essere abbastanza chiaro. Un modo potrebbe essere limitata è quello di garantire il processo non priveliged viene eseguito con un utente in un gruppo di nome. Poi comando chown thet proxy con radice: myprivategroup e chown come 4710 in modo che solo gli utenti che sono membri di myprivategroup possono eseguirlo

.

Questo è probabilmente il più sicuro possibile. La cosa principale è fare in modo il processo di delega è buona e sicura e bloccato in modo che solo gli utenti pertinenti possono eseguirlo tramite l'appartenenza al gruppo.

Se ci sono altre restrizioni che conosci può essere applicata ai processi forniti dall'utente, quindi il programma di proxy potrebbe verificare che il processo conferisce a tali regole. Si noti che mentre questo può essere un gap di arresto, non sarebbe oltre i regni della tecnologia per qualcuno alle imbarcazioni un programma di "cattivo" che supera i test.

Per una maggiore sicurezza (consigliato), utilizzare una sandbox o chroot jail come detto da mark4o.

Altri suggerimenti

Forse è possibile concedere le autorizzazioni a utente non root con sudo e / etc / sudoers, ma in questo modo non sembra garantire e non lineare. Non so che cosa avete bisogno, ma forse è possibile pre-creare alcuni utenti e quindi utilizzare loro.

Si vuole utilizzare una sorta di sandboxing o virtualizzazione ; almeno un ambiente al minimo. Vedi in Linux .

Questo è un problema, come non si può usare su vie script senza il terminale (probabilmente una caratteristica di sicurezza). Sono sicuro che si può incidere il vostro senso attraverso questo, ma probabilmente è stato fatto per una buona ragione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top