# Perchè non va il bit suid? [Risolto con sudo]

## canduc17

Devo riuscire a far partire pppoe-start da utente normale...

Allor, ho pensato di settare il bit suid, come per ping:

```
chmod 4755 /usr/sbin/pppoe-start
```

Però non funziona:

```
anto@candasus ~ $ /usr/sbin/pppoe-start 

pppoe-start: You must be root to run this script
```

Perchè, mannaggia la pupazza?!

Ho provato a mettere i permessi del comando a 777, a cambiare proprietario del file in anto, ma niente...

Cosa cavolo devo fare?

----------

## djinnZ

usare sudo, suid funziona solo con gli eseguibili binari.  :Wink: 

In verità esisterebbe un modo alquanto perverso ed autolesionista di implementarlo ma si dovrebbero rendere eseguibili tutti gli script con un metodo simile a quello degli eseguibili java a livello kernel. Anche se chiunque più che sconsigliarlo ti direbbe che l'idea è imbecille.

----------

## comio

 *canduc17 wrote:*   

> Devo riuscire a far partire pppoe-start da utente normale...
> 
> Allor, ho pensato di settare il bit suid, come per ping:
> 
> ```
> ...

 

prima cosa: "và" si scrive senza accento.

Il suid sugli script non vanno per "precauzione". Tu puoi dare il suid ad un elf puro che a sua volta può eseguire lo script: sudo è il tuo amico in questi casi.

ciao

luigi

----------

## djinnZ

 *comio wrote:*   

> prima cosa: "và" si scrive senza accento.

 Non me ne ero accorto... solita prece

 *comio wrote:*   

> Il suid sugli script non vanno per "precauzione".

 Prima cosa una prece, di nuovo.  :Laughing:  Tornando seri non è una precauzione ma il fatto che il bit suid agisce solo sugli eseguibili (o su quanto attivato dalle variabili CONFIG_BINFMT_* nella configurazione) lanciati dal kernel.

In realtà è la shell a riconoscere gli script eseguibili ed a lanciare l'interprete (con i privilegi che ha, ovvero quelli dell'utente, perl voleva prevedere una possibilità del genere abilitandolo suid se non ricordo male).

Maggiori informazioni in /usr/src/linux/Documentation/java.txt e NETqualcosa.

 *comio wrote:*   

> Tu puoi dare il suid ad un elf puro che a sua volta può eseguire lo script

 via system() ? Non è che funzioni dappertutto e sempre. Sudo è l'unica soluzione valida.

 *canduc17 wrote:*   

> permessi del comando a 777

   :Shocked:  è proprio per la possibilità di fare simili stupidaggini che non è possibile rendere suid uno script (nei sistemi operativi seri, aggiungerei).

Ti rendi conto che nelle tue intenzioni avresti dato il permesso di modificare e lanciare un eseguibile con privilegi assoluti (supeuser) a tutti i possibili utenti del sistema?

Immagina che il solito genio che si crede un accherr ti ci piazza dentro un bel 

```
rm -f * *
```

 che fai? (lo dico perchè è successa realmente una cosa del genere ma non dico ne dove ne come...  :Laughing: )

p.s.: tanto per puntualizzare visto che è domenica e sto attendendo che finisca il download dei soliti aggiornamenti del piffero...

----------

## comio

 *djinnZ wrote:*   

>  *comio wrote:*   prima cosa: "và" si scrive senza accento. Non me ne ero accorto... solita prece
> 
>  *comio wrote:*   Il suid sugli script non vanno per "precauzione". Prima cosa una prece, di nuovo.  Tornando seri non è una precauzione ma il fatto che il bit suid agisce solo sugli eseguibili (o su quanto attivato dalle variabili CONFIG_BINFMT_* nella configurazione) lanciati dal kernel.
> 
> In realtà è la shell a riconoscere gli script eseguibili ed a lanciare l'interprete (con i privilegi che ha, ovvero quelli dell'utente, perl voleva prevedere una possibilità del genere abilitandolo suid se non ricordo male).
> ...

 

Gli script sono eseguiti da bash... volendo si potrebbe far mantenere a bash il suid... ma queste è cosa brutta. Non parlavo della system... ma di una bella exec() con bash e parametro lo script (per esempio). In ogni caso non intendevo la syscall quanto piuttosto usare sudo per tagliare la testa al toro.

L'esecuzione del suid non è bloccata per qualche motivo tecnico ma solo perché sarebbe fonte di enormi casini... è un ascelta tecnica piuttosto che una limitazione. Per questo dicevo "per precauzione".

ciao

luigi

----------

## djinnZ

prova a configurare bash in binfmt_misc e vedrai  :Wink: 

In realtà nei sistemi hardenizzati una cosa del genere non può essere fatta a meno che il programma non sia stato esplicitamente autorizzato (per esempio nella conf di default di selinux per gento solo sudo e pam hanno quel privilegio) quindi per compatibilità è sbagliato usare altre soluzioni.

----------

## comio

 *djinnZ wrote:*   

> prova a configurare bash in binfmt_misc e vedrai 
> 
> 

 

Appunto!!!! Diciamo la stessa cosa!  :Very Happy:  Ribadisco: Si può fare ma è meglio non farlo dato che fa perdere velocemente il controllo della situazione.

luigi

 *Quote:*   

> 
> 
> In realtà nei sistemi hardenizzati una cosa del genere non può essere fatta a meno che il programma non sia stato esplicitamente autorizzato (per esempio nella conf di default di selinux per gento solo sudo e pam hanno quel privilegio) quindi per compatibilità è sbagliato usare altre soluzioni.

 

----------

## canduc17

Grazie a tutti, ho seguito la guida a sudo e ce l'ho fatta.

Ho corretto anche la sgrammaticatura.

Cià!

----------

