Come eseguire uno script abilitando i privilegi di root?

8 risposte [Ultimo messaggio]
Ritratto di pinguinopaesano
pinguinopaesano
(Monster)
Offline
Monster
Iscritto: 30/06/2006
Messaggi: 418

Ciao a tutti

ho creato questo script:

#!/bin/sh<br /><br />iptables=&quot;/sbin/iptables&quot;<br />echo &#039;0&#039; &gt; /proc/sys/net/ipv4/ip_forward<br />modprobe ip_tables<br />modprobe ip_conntrack<br />modprobe ip_conntrack_ftp<br />modprobe ip_nat_ftp<br />modprobe ip_conntrack_ftp ip_nat_ftp<br />modprobe iptable_nat<br />modprobe ipt_MASQUERADE<br />iptables -t nat -A POSTROUTING -o ippp0 -j MASQUERADE<br />iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT<br />iptables -A FORWARD -s 192.168.99.1/2 -j ACCEPT<br />iptables -A FORWARD -j DROP<br />echo &#039;1&#039; &gt; /proc/sys/net/ipv4/ip_forward

E ho messo il file di testo "script" rendendolo eseguibile con konqueror.

All'avvio del pc non parte, devo aprire la console, digitare SU e poi sh script e allora funziona.

Come automatizzo il tutto? Grazie in anticipo. Big Grin

Ritratto di Mercurio
Mercurio
(Monster)
Offline
Monster
Iscritto: 10/12/2006
Messaggi: 397

Se vuoi farlo partire all'avvio, puoi aggiungere questo codice o un riferimento ad esso nel file /etc/rc.d/boot.local
boot.local è un file molto comodo (che io uso allegramente per queste cose), anche se forse nel tuo caso parte un pò troppo presto.

Alternativamente, puoi creare un link al tuo script in /etc/rc.d/rc5.d , rinominando il link aggiungengo K come prima lettera e un numero, in modo che venga avviato ad un momento preciso tra uno script e l'altro.
(vedi cosa c'è in /etc/rc.d/rc5.d e ti rendi meglio conto di cosa ho detto)

Probabilmente ci sono anche altri posti dove puoi metterlo... io di solito uso questi.

Massima Zen:
Se su OpenSuSE qualcosa vuoi configulale,
il pannello di contlollo devi aplile.
(e magari sfogliare la documentazione)

Ritratto di pinguinopaesano
pinguinopaesano
(Monster)
Offline
Monster
Iscritto: 30/06/2006
Messaggi: 418

Grazie!

Potrei mettrlo in /home/pinguinopaesano/.kde, e renderlo eseguibile con privilegi di root?

altrimenti farò come hai detto...

Ritratto di pinguinopaesano
pinguinopaesano
(Monster)
Offline
Monster
Iscritto: 30/06/2006
Messaggi: 418

mi spiego meglio: è possibile agiungere qualche riga di comando che semplicemte di faccia loggare come root per eseguire il resto dei comandi?

Ritratto di Mercurio
Mercurio
(Monster)
Offline
Monster
Iscritto: 10/12/2006
Messaggi: 397

Se lo infili in quei posti viene eseguito da root.

Ma perché usi .kde? io preferisco mettere tutti i miei script in /home/ciccio/bin

In questo modo posso richiamarli dovunque io sia scrivendo solo il nome dello script.

In ogni caso se scrivi gnomesu [nomescript] ti compare la finestrella che ti chiede la password e lo script ottiene i privilegi.

La cosa dovrebbe funzionare anche se aggiungi una iconcina a un pannello e inserisci in "comando personalizzato" gnomesu [nomescript]

Tutto questo per gnome. Per kde sarà simile. kdesu?

Massima Zen:
Se su OpenSuSE qualcosa vuoi configulale,
il pannello di contlollo devi aplile.
(e magari sfogliare la documentazione)

Ritratto di pinguinopaesano
pinguinopaesano
(Monster)
Offline
Monster
Iscritto: 30/06/2006
Messaggi: 418

Ho risolto il mio problema.

In realtà, lo script non funziona se prima non mi sono collegato a internet. Ho quindi creato un comando sul menu di kde, azionandolo, mi si apre il terminale, al quale devo solo scrivere la psw di root e dare invio, dopo la connessione.

Grazie epr le info, mercurio, ne farò tesoro in generale per gli script ina vvio! Big Grin

Ritratto di pinguinoconfuso
Offline
Geek
Iscritto: 07/06/2006
Messaggi: 151

Scusate se riporto su il thread, ma ho lo stesso problema di Pinguinopaesano e vorrei capire se sia possibile creare uno script da mettere in .kde/Autostart e dargli i privilegi di root.

Ho un semplicissimo script:
#! /bin/sh
modprobe 'modulodacaricare'

Ho provato ad aggiungere il comando 'su' all'inizio ed ovviamente non funziona (nemmeno con sudo), ho provato (non ridete!) con:
su
echo "password di root"
exit

A parte il fatto che potrei usare, se non erro, anche modprobe.conf.local o, come suggerisce Mercurio, /etc/rc.d/rc5.d (con il click-dx mi compare link ad applicazione, e' giusto per creare il link allo script?)...posso anche farlo da .kde/Autostart?

Fra l'altro, in qualche log ho notato alcuni 'sudo', dovrebbe significare che, all'avvio, l'utente ottiene alcuni privilegi di root 'in automatico'.

Scusate la confusione!
Grazie.

Ritratto di orion
orion
(Guru)
Offline
Guru
Iscritto: 11/07/2006
Messaggi: 2919

Il fatto e` che quando dai su, diventi root e la shell passa a root. Quindi i comandi successivi al su, in uno script, vengono eseguiti quando esci dal su con exit.

Per eseguire un comando come root (senza usare sudo), basta lanciare il comando su -c <comando>.
Nel tuo caso: su -c "/sbin/modprobe modulodacaricare".

Per quanto riguarda mettere un link dentro /etc/init.d/rc5.d, bisogna stare attenti ad alcuni dettagli: come prima cosa il link deve iniziare con S (e non con K, come indicato in qualche post precedente); poi il numero deve essere tale da porre il link dopo quelli che logicamente vengono prima (che so, l'avvio di X dopo il caricamento della tastiera) e poi lo script dovrebbe avere una funzione start che viene invocata all'avvio dello script (non e` obbligatorio, ma di norma i file in rc sono scritti in questo modo)

openSUSE 12.1 on Acer Aspire 1810tz - LXDE ultima versione dal repo x11:/lxde

Ritratto di pinguinoconfuso
Offline
Geek
Iscritto: 07/06/2006
Messaggi: 151

Quote:

orion ha scritto:
Il fatto e` che quando dai su, diventi root e la shell passa a root. Quindi i comandi successivi al su, in uno script, vengono eseguiti quando esci dal su con exit.

Il fatto e' che da shell posso inserire la password, in uno script che si dovrebbe caricare all'avvio, no.
Per questo avevo inserito:
echo "password di root"
nello script, sperando che in qualche modo venisse accettata.

Quote:

Per eseguire un comando come root (senza usare sudo), basta lanciare il comando su -c <comando>.
Nel tuo caso: su -c "/sbin/modprobe modulodacaricare".

Il problema non credo sia tanto se usare su o sudo, secondo me e' proprio il fatto della password.

Adesso che ci penso...e se inserissi lo script in /root/.kde/autostart? Forse funziona.

Comunque, come accennavo, nel log di sistema compiono alcune righe sia con su che con sudo. Dovrebbe significare che c'e' qualche modo per l'utente di compiere operazioni da root 'in automatico'.

La funzione start credo sia un po' troppo per me! Wink

Grazie.
Ciao.