Funzionalità per uno script su Linux


8

Se voglio impostare una capacità ( capabilities(7)), come, ad esempio CAP_NET_BIND_SERVICE, su un file eseguibile e quel file è uno script , devo impostare la capacità ( setcap(8)) sull'interprete che avvia quello script o è sufficiente impostarlo sul file di script si?

Nota: la domanda riguarda Scientific Linux 6.1 in particolare, ma penso che si possa rispondere in modo generico.

Risposte:


8

L'impostazione della funzionalità sullo script non sarà efficace. È la situazione simile a quella di non lavorare un setuidpo 'sullo script. Simile come in quest'ultimo caso è l'implementazione di come execvegestisce shebang e il ragionamento di sicurezza dietro di esso (per i dettagli vedere: Consenti setuid su script di shell ).

Penso che tu abbia queste opzioni

  1. impostare le capacità sull'interprete stesso (in realtà piuttosto una copia di esso)

    • hai un problema qui che chiunque sia in grado di eseguirlo verrà eseguito con quelle elevate capacità (essere in grado di eseguire alcuni script arbitrari o avviarlo in modo interattivo)
  2. scrivere un eseguibile wrapper che avrà una logica codificata per eseguire lo script e impostare le funzionalità desiderate su questo eseguibile

    • assicurarsi che nessuno sia in grado di modificare né rimuovere / sostituire lo script
    • facendo ciò, chrootsi potrebbe perdere tale involucro

In entrambi i casi dovresti assicurarti che le capacità impostate sopravvivano execveimpostando inheritableflag. È inoltre possibile utilizzare pam_capdistribuito con di libcapsolito per attivare effettivamente le funzionalità desiderate mediante la configurazione solo per gli utenti selezionati.

E in generale vuoi assicurarti che nessuno sia in grado di modificare il comportamento del tuo interprete modificando l'ambiente, ad es. PYTHON_PATHo qualcosa di simile.

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.