[Risolto] avvio automatico programma che richiede permessi di root

Problemi e suggerimenti legati al software e ai pacchetti problematici.
Rispondi
gaglioffo
Arciere
Messaggi: 254
Iscritto il: 11 maggio 2016, 21:06

[Risolto] avvio automatico programma che richiede permessi di root

Messaggio da gaglioffo » 26 ottobre 2017, 18:32

ciao,
come posso fare in modo che all'avvio del sistema venga eseguito un programma (in verità è solo uno script) che richiede i premessi di root?
uso il solo openbox.
Ultima modifica di gaglioffo il 31 ottobre 2017, 13:57, modificato 1 volta in totale.

VenereNera
Little John
Messaggi: 803
Iscritto il: 20 dicembre 2012, 19:50

Re: avvio automatico programma che richiede permessi di root

Messaggio da VenereNera » 26 ottobre 2017, 19:36

Crei un service e se ci spieghi +/- cosa deve e quando fare, è possibile istruire il servizio in modo tale si avvii in un momento preciso. Esistono i servizi users specifici per l' utente locale e quelli di sistema, diciamo generali o per tutti gli utenti.

Bye ^_^

EDIT: Oppure è possibile usare un metodo più grezzo. Se per esempio il tuo utente è iscritto nel file /etc/sudoers in maniera tale che alla richiesta di sudo or su non gli venga richiesta la pass, basti aggiungere sudo ai comandi nello script.
Altra maniera ancora. Ti sarà successo di avviare il programma Gparted, richiede una regola tale da richiedere i permessi, se l' utente è iscritto a un gruppo che può avviare comandi da ''root' (diciamo così)... ecco che bpassi il sistema.
Ultima modifica di VenereNera il 26 ottobre 2017, 19:42, modificato 1 volta in totale.

Avatar utente
Dusty
Arciere Provetto
Messaggi: 592
Iscritto il: 12 agosto 2011, 13:15
Località: Firenze

Re: avvio automatico programma che richiede permessi di root

Messaggio da Dusty » 26 ottobre 2017, 19:37

Lo fai fare a systemd.
Definisci un <avvio>.service in /etc/systemd/system/
contenente:

Codice: Seleziona tutto

[Unit]
Description=<commento>

[Service]
Type=oneshot
ExecStart=<il_tuo_programma>
TimeoutSec=0
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
Poi, systemctl enable <avvio>.service
Vedi anche:
https://wiki.archlinux.org/index.php/Us ... al-Systemd

Avatar utente
TheSaint
Robin Hood
Messaggi: 7087
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: avvio automatico programma che richiede permessi di root

Messaggio da TheSaint » 27 ottobre 2017, 0:46

Se è uno script relativo all' accesso dell' utente normale lo puoi mettere in ~/.config/autostart-scripts/ , oppure in ~/.bash_profile.
A livello generale concordo come sopra ed aggiungo che se è un qualche programma in particolare che ha bisogno di un utente per agire, devi anche creare quel tipo di utente.
Io, per esempio, ho fatto un server con aria2c e per poterlo avviare a priori necessita del suo utente e /home. A discapito di quello che si trova su AUR che aspetta un utente loggato per poter avviare il servizio. A me serve anche per il controllo da remoto e che magari non ci sono utenti loggati ;)
F the saint
10 anni da questo forum ;)

gaglioffo
Arciere
Messaggi: 254
Iscritto il: 11 maggio 2016, 21:06

Re: avvio automatico programma che richiede permessi di root

Messaggio da gaglioffo » 31 ottobre 2017, 13:44

grazie,
ho provato la tecnica di Dusty ma non funziona:

Codice: Seleziona tutto

$ cat /etc/systemd/system/wonder2.service 
[Unit]
Description=<commento>

[Service]
Type=oneshot
ExecStart=/usr/bin/wonder2
TimeoutSec=0
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Codice: Seleziona tutto

$ sudo systemctl start wonder2.service 
Failed to start wonder2.service: Unit wonder2.service is not loaded properly: Exec format error.
See system logs and 'systemctl status wonder2.service' for details.

Codice: Seleziona tutto

$ sudo systemctl status wonder2.service
Warning: wonder2.service changed on disk. Run 'systemctl daemon-reload' to reloa
● wonder2.service - <commento>
   Loaded: error (Reason: Exec format error)
   Active: inactive (dead)
lines 1-4/4 (END)

Codice: Seleziona tutto

$ cat /usr/bin/wonder2
wondershaper -a eth0 -d 10000 -u 500
EDIT:
ho visto che in "/usr/lib/systemd/system" c'è già un "wondershaper.service" preconfezionato:

Codice: Seleziona tutto

[Unit]
Description=Bandwidth shaper/Network rate limiter
After=network.target
Wants=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/etc/conf.d/wondershaper.conf
ExecStart=/usr/bin/wondershaper -a $IFACE -d $DSPEED -u $USPEED
ExecStop=/usr/bin/wondershaper -c -a $IFACE

[Install]
WantedBy=multi-user.target
ho provato a modificarlo così:

Codice: Seleziona tutto

[Unit]
Description=Bandwidth shaper/Network rate limiter
After=network.target
Wants=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/etc/conf.d/wondershaper.conf
ExecStart=/usr/bin/wondershaper -a eth0 -d 10000 -u 500
ExecStop=/usr/bin/wondershaper -c -a eth0

[Install]
WantedBy=multi-user.target
e ora sembra funzionare, tranne lo stop: se do "systemctl stop wondershaper.service" il limite di banda rimane.

Avatar utente
TheSaint
Robin Hood
Messaggi: 7087
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: [Risolto] avvio automatico programma che richiede permessi di root

Messaggio da TheSaint » 1 novembre 2017, 12:21

Mi pare strano che si usi ancora eth0. Cosa dice

Codice: Seleziona tutto

$ ip link
F the saint
10 anni da questo forum ;)

gaglioffo
Arciere
Messaggi: 254
Iscritto il: 11 maggio 2016, 21:06

Re: [Risolto] avvio automatico programma che richiede permessi di root

Messaggio da gaglioffo » 1 novembre 2017, 20:19

ho deciso io di usare ancora le vecchie nomenclature, sono un reazionario :-þ

Avatar utente
TheSaint
Robin Hood
Messaggi: 7087
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: [Risolto] avvio automatico programma che richiede permessi di root

Messaggio da TheSaint » 2 novembre 2017, 6:17

Allora mi par evidente che hai taroccato con udev :P
F the saint
10 anni da questo forum ;)

Avatar utente
Dusty
Arciere Provetto
Messaggi: 592
Iscritto il: 12 agosto 2011, 13:15
Località: Firenze

Re: avvio automatico programma che richiede permessi di root

Messaggio da Dusty » 2 novembre 2017, 14:32

gaglioffo ha scritto: ho provato la tecnica di Dusty ma non funziona:
ExecStart=/usr/bin/wonder2
cat /usr/bin/wonder2
wondershaper -a eth0 -d 10000 -u 500
Certo che non funziona!
In ExecStart devi mettere un eseguibile; invece hai messo un file testuale che contiene il nome del programma da eseguire.
se do "systemctl stop wondershaper.service" il limite di banda rimane.
La prima considerazione da fare che wondershaper sta in AUR; quindi non è un programma ufficialmete supportato da Arch.
Poi sarebbe utile verificare se c'è un problema nella chiusura del servizio oppure nella esecuzione del programma.
Quando chiudi il servizio dovresti andare sul journal a vedere se c'è qualche segnalazione.
Se non trovi nessuna segnalazione di errore, allora potresti provare ad eseguire il comando wondershaper direttamente dentro una finestra di terminale e quindi controllare se il limite di banda è stato rimosso.
Se dopo l'esecuzione il limite di banda resta, allora vuol dire che wondershaper non funziona.

Rispondi