GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:le funzionalità possono essere utilizzate negli script senza impostare il codice binario dell'interprete?

In questo momento sto usando cap_net_bind_service MY_USERNAME in /etc/security/capability.conf.
Ora devo solo impostare cap_net_bind_service+i sull'interprete del mio linguaggio di scripting preferito per poter aggiungere CAP_NET_BIND_SERVICE all'efficace impostato tramite libcap[-ng].

Funziona bene, ma mi chiedo se c'è un modo per ottenere la stessa cosa senza impostare alcun limite sul binario dell'interprete. Anche se non è un grosso problema (altri account utente non hanno il limite quindi non possono usarlo anche con il bit impostato sul binario dell'interprete) è alquanto fastidioso poiché devo reimpostare il flag ogni volta che l'interprete è aggiornato.

Risposta accettata:

Di solito, le capacità vengono ereditate dai bambini. Come indicato nella manpage :

Un figlio creato tramite fork(2) eredita copie dei set di capacità del genitore.

Il problema con gli script è che non sono direttamente eseguibili. Il kernel passa attraverso un elenco di controlli (il codice del kernel si trova in fs/binfmt_*.c). Uno di questi è "binfmt_script.c", che controlla la prima riga per uno shebang, quindi chiama il vero interprete (quello nello shebang) con il tuo script come argomento. In quanto tale, viene chiamato l'interprete standard/comune e legge semplicemente il tuo script come un argomento.

Ciò significa che dovrai impostare la funzionalità sull'interprete, non sullo script.
Lo stesso vale per suid bit e altri flag speciali.

Quindi o fai una copia del tuo interprete, imposta le funzionalità che desideri su di esso (controlla anche che nessuno possa accedervi tramite chmod/chown) e chiami questo interprete copiato nel tuo shebang.
Puoi anche eseguire setcap logica nel tuo script.


Linux
  1. 3 cose utili che puoi fare con lo strumento IP in Linux

  2. Linux:quali sono i diversi modi per impostare i permessi dei file ecc. su Gnu/linux?

  3. Linux:come trovare il driver di dispositivo utilizzato per un dispositivo?

  4. Linux:come impostare l'affinità del processore di un processo su Linux?

  5. Comprendere gli script rc in Linux

Come impostare o modificare il fuso orario in Linux

Comando Linux DF – Le 3 opzioni più utilizzate

Come configurare il firewall UFW su Linux

Imposta una pagina HTML come sfondo su Linux

Come posso impostare l'affinità del processore di un processo su Linux?

Come posso determinare cosa sta causando un lento aumento dello spazio su disco utilizzato in Linux?