differenza tra lanciare eseguibile con suid o con su -c

Ciao
Leggendo http://www.fedoraonline.it/modules/newbb/viewtopic.php?topic_id=8875&forum=2&post_id=71599#forumpost71599 discussione , nel tentativo di dare una mano, mi è venuto un dubbio e:
Ho copiato l’eseguibile /sbin/service nella mia home
Gli ho attribuito tutti i permessi compreso lo suid (chmod 4777 service)

ll service
-rwsrwxrwx 1 root root 1,8K 11 mar 11:34 service

Ora , perché se do da utente normale

./service httpd restart

mi dice che non ho i permessi:

rm: impossibile rimuovere `/var/run/httpd.pid': Permission deniedTO]

Avvio di httpd: 
touch: cannot touch `/var/lock/subsys/httpd': Permission denied

Perchè un eseguibile lanciato con i privilegi di root , non mantiene tali permessi nel momento in cui deve modifiare altri file?

Se lo lancio con il comando
su -c
ovviamente va a buon fine e riesco a restartare il servizio httpd

In poche parole , oh sempre pensato che lanciare un eseguibile con:
su -c
o lanciare un esegiubile con il permesso suid settato fosse la stessa identica cosa ma evidentemente ci sono delle differenze

Se qualcuno conosce la differenza sarei curioso di saperla

Ma mi leggi nel pensiero?
Proprio 10 minuti fa stavo facendo una prova simile. Ho copiato una bash nella mia home e ho fatto la stessa cosa, la lancio e non “divento root”. Se pero’ copio una ksh anzichè la bash funziona…

Sto indagando, se scopro qualcosa te lo dico!

edit: non fate 'ste cose comunque (parlo in generale) è pericoloso… io sto giusto facendo qualche prova…

Felice di sapere che anche Zod sta indagando!
Ero preoccupato di aver postato una sciocchezza
Ci riaggiorniamo ipù tardi!!

Forte 'sta cosa! :slight_smile: Non la sapevo! Ho trovato in giro questo:

the suid bit influes only the Effective UID, and there is somewhere in the bash code a setuid(getuid) to drop root rights (if executed by non root)

ecco perché non va con la bash (il tuo problema secondo me è lo stesso… “service”:

# head -1 /sbin/service 
#!/bin/sh

usa “sh”, ma “sh” in linux è “bash”:

# ll /bin/sh
lrwxrwxrwx 1 root root 4 19 dic 08:24 /bin/sh -> bash

e la bash è furba :slight_smile:

[quote]
Forte 'sta cosa! Non la sapevo! [/quote]
Io oltre a non saperla sono, ho ancora dei dubbi.
Non riguarda solo la bash?

Ho provato a modificare l’eseguibile service che precedentemente avevo copiato nella mia home , in questo modo:

head -1 service
#!/bin/zsh

Se do :

./service httpd restart
/etc/init.d/functions:8: condition expected: =~
Utilizzo: httpd {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}

Non capisco che cosa significa?
provando con un’ altro servizio:

./service iptables restart
/etc/init.d/functions:8: condition expected: =~
/etc/init.d/iptables: line 49: /etc/sysconfig/iptables-config: Permission denied

oltre al primo errore mi da anche un “Permesso Negato”
Sbaglio io o quindi questa restrizione non riguarda solo la Bash?

Non è cosi’ semplice.

Innanzitutto ogni shell ha una sintassi differente, quindi gli script scritti per bash non è detto che funzionino utilizzando ksh, tcsh o altre shell

Poi come se non bastasse, “/sbin/service” ad un certo punto richiama “/etc/init.d/nome_servizio” (questo codice ad esempio è per il restart):

 if  -x "${SERVICEDIR}/${SERVICE}" ]; then
            env -i PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" stop
            env -i PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" start
            exit $?

e nel caso di httpd:

# head -1 /etc/init.d/httpd 
#!/bin/bash

ma guarda chi c’è? un’altra bash :slight_smile:

Non lo risolvi in questo modo, dammi retta!

[quote]
Zod ha detto:
Non lo risolvi in questo modo, dammi retta![/quote]
E non me lo farò ripetere una seconda volta!!
Bandiera bianca :lol:
Grazie Zod per tutte le informazioni !!!

[quote=geno]

[quote]
Zod ha detto:
Non lo risolvi in questo modo, dammi retta![/quote]
E non me lo farò ripetere una seconda volta!!
Bandiera bianca :lol:
Grazie Zod per tutte le informazioni !!![/quote]

Io non ho capito neppure di che parlate :lol:

S.

parlavamo di “suiddare” un file (che bella sta parola… “suiddare” :slight_smile: mi piace…)

questo può essere interessante:
http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/shell.html

Interessante!
[mini flame on]Ennesima dimostrazione che la bash è er mejo :slight_smile: [/mini flame off]

[quote=Astharoth]
Interessante!
[mini flame on]Ennesima dimostrazione che la bash è er mejo :slight_smile: [/mini flame off][/quote]

Bè… ho usato tantissimi anni la ksh e mi sono trovato stra-stra-stra-bene! Una cosa che adoravo in particolare era l’opzione “set -o vi” per utilizzare i comandi “vi like” nella shell!

Ogni shell ha i suoi pregi e i suoi difetti