PDA

View Full Version : Come creare uno script di livello root in ubuntu...


3nigma666
09-07-2007, 21:25
ciao a tutti..
io ho necessita di far runnare all'avvio di ogni sessione questo script:

#!/bin/bash
sdpd
sdptool add --channel=3 SP
dund --listen --channel 3 --msdun noauth 192.254.1.68:169.254.1.1 crtscts 115200 ms-dns 85.37.17.14 lock
rfcomm bind 4 00:1B:AF:BF:7F:73 5
chmod 777 /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -j MASQUERADE

il problema è che deve essere assolutamente eseguito in modalità root.
non posso scrivere sudo prima di ogni input xke inevitabilmente mi chiederebbe la passw .
Inoltre considerando che lo script l'ho chiamato bt_n70 , non posso richiamarlo da gestione sessioni in questo modo:

sudo /home/bt_n70

perke avrebbe comunque bisogno della passw.
come posso fare per aggirare il problema ? grazie a tutti per l'aiuto

k4ez4r
09-07-2007, 21:54
Penso basti settare il SUID
chmod u+s <nomescript>

EDIT: credo vada fatto da root

3nigma666
09-07-2007, 22:15
Penso basti settare il SUID
chmod u+s <nomescript>

EDIT: credo vada fatto da root
protroppo non cambia nulla... :'(

fale
09-07-2007, 22:21
anche io ho lo stesso problema... e mi era venuta in mente una soluzione... forse è una vaccata... forse no. La mia idea è la seguente:

sudo -i
e poi passargli la pass...credo che sia possibile.... ma non ho la più ben che minima idea di come farlo...

k4ez4r
09-07-2007, 22:25
protroppo non cambia nulla... :'(
Sicuro?

Il file deve appartenere all'utente root
sudo chown root:root <nomescript>

http://it.wikipedia.org/wiki/Setuid

3nigma666
09-07-2007, 22:30
anche io ho lo stesso problema... e mi era venuta in mente una soluzione... forse è una vaccata... forse no. La mia idea è la seguente:

sudo -i
e poi passargli la pass...credo che sia possibile.... ma non ho la più ben che minima idea di come farlo...

grandissimo mi hai fatto venire una mega idea che ha risolto il problema :


crei due script: uno che fa tipo da "main" e l'altro lo script vero e proprio

nel "main" scrivi:


echo TUAPASSWORD_DI_ROOT | sudo ./TUOSCRIPT

e nel secondo script metti il codice del tuo script.

Praticamente crei una pipe: l'output della prima stringa di codice è l'input della seconda :):):)

ora basta andare in sistema -> preferenze -> sessione
e aggiungere il tuo "main" ai programmi da caricare ad inizio sessione

k4ez4r
09-07-2007, 22:33
:eekk:

3nigma666
09-07-2007, 22:35
Sicuro?

Il file deve appartenere all'utente root
sudo chown root:root <nomescript>

http://it.wikipedia.org/wiki/Setuid
si hia ragione nache il tuo modo funziona.. il file ero convinto di averlo creato con il comando :


sudo gedit nomefile

in realta avevo fatto solo


gedit nomefile

quindi non apparteneva al root

k4ez4r
09-07-2007, 22:40
Quindi adesso funziona?

3nigma666
09-07-2007, 22:42
si si in entrambe le maniere

k4ez4r
09-07-2007, 22:56
Bene :)

Forse il metodo SUID è *un pelo* più sicuro :asd:

Psycotic
10-07-2007, 12:06
nn c'era bisogno, sul file sudoers basta mettere l'entry NOPASSWD e nn ti chiede la pass

esempio: (/etc/sudoers)
pippo ALL=(root) NOPASSWD: /etc/init.d/apache2

k4ez4r
10-07-2007, 12:52
nn c'era bisogno, sul file sudoers basta mettere l'entry NOPASSWD e nn ti chiede la pass

esempio: (/etc/sudoers)
pippo ALL=(root) NOPASSWD: /etc/init.d/apache2Interessante, non lo sapevo... :)

3nigma666
10-07-2007, 19:49
nn c'era bisogno, sul file sudoers basta mettere l'entry NOPASSWD e nn ti chiede la pass

esempio: (/etc/sudoers)
pippo ALL=(root) NOPASSWD: /etc/init.d/apache2


ma cosi perdo molto in sicurezza.. no ?

k4ez4r
10-07-2007, 20:00
ma cosi perdo molto in sicurezza.. no ?Non credo, dall'esempio pare che la password non venga chiesta
solo per il file specificato (nel caso dell'esempio apache2)

alpha2
15-07-2007, 15:13
ciao a tutti..
io ho necessita di far runnare all'avvio di ogni sessione questo script:

#!/bin/bash
sdpd
sdptool add --channel=3 SP
dund --listen --channel 3 --msdun noauth 192.254.1.68:169.254.1.1 crtscts 115200 ms-dns 85.37.17.14 lock
rfcomm bind 4 00:1B:AF:BF:7F:73 5
chmod 777 /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -j MASQUERADE

il problema è che deve essere assolutamente eseguito in modalità root.
non posso scrivere sudo prima di ogni input xke inevitabilmente mi chiederebbe la passw .
Inoltre considerando che lo script l'ho chiamato bt_n70 , non posso richiamarlo da gestione sessioni in questo modo:

sudo /home/bt_n70

perke avrebbe comunque bisogno della passw.
come posso fare per aggirare il problema ? grazie a tutti per l'aiuto

abilita l'account root e poi eseguilo come root.
Prima di abilitare l'account di root fissa la password di root con "sudo passwd root".
Per abilitare l'account root (Ubuntu 7.04) vai in Sistema->Amministrazione->Finestra di accesso
quindi nella finestra che compare vai nella tab "sicurezza" e spunta "Consentire il login locale dell'amministratore di sistema", chiudi e così l'account di root è abilitato.
La password sarà quella che hai inserito in precedenza.

k4ez4r
15-07-2007, 15:45
abilita l'account root e poi eseguilo come root.
Prima di abilitare l'account di root fissa la password di root con "sudo passwd root".
Per abilitare l'account root (Ubuntu 7.04) vai in Sistema->Amministrazione->Finestra di accesso
quindi nella finestra che compare vai nella tab "sicurezza" e spunta "Consentire il login locale dell'amministratore di sistema", chiudi e così l'account di root è abilitato.
La password sarà quella che hai inserito in precedenza.Ragazzi, manco nel forum di Winzoz mi sa che si sentono consigli del genere :asd:

Ma scusa, sono stati proposi due metodi che non abbassano il livello di sicurezza proprio perchè risolvono il problema seguendo la logica con cui un sistema *nix è pensato...

La soluzione che proponi è perversa