PDA

Visualizza versione completa : Comando "reboot" funziona anche senza sudo



Andy86
08-04-15, 19: 25
:bai

Da un post di kirk78 ho scoperto il comando reboot, di solito io usavo "shutdown -r", volendo vedere che comando era e se ce l'avevo, ho scoperto che mi funziona anche senza sudo. :shock

Cioè, ho digitato reboot per vedere se usciva l'help pensando "tanto al massimo da errore permessi", e invece il pc s'è riavviato... mi chiedo, ma non rappresenta un rischio per la sicurezza?

Cioè uno script a livello utente può riavviarmi il computer? Mi sembra una cosa molto brutta. :shock

Anche perché vedo su google che viene sempre indicato accompagnato dal sudo, quindi è come se fosse un (bug?) della mia configurazione? :ohoh

Kirk78
08-04-15, 22: 05
Caspiteronzola! Sono assolutamente daccordo con te che è una cosa molto brutta... diciamo non bella per essere buoni.
Quando ero, ahimè, in tty come suggerito dal mio amico Andy86, facendo solo reboot il terminale mi diceva espressamente (con Ubuntu 12.04) che dovevo essere root.
L'unica cosa che mi viene in mente è che sei root su terminale :shock
Perchè? Speriamo che il nostro caro amico pierino ce lo dica! Sono molto interessato, come già sapete, sulla sicurezza.

:bai

EDIT per caso hai fatto una o più di queste opzioni (http://forum.ubuntu-it.org/viewtopic.php?t=26475)?

Andy86
08-04-15, 22: 43
Ovviamente non l'ho fatto da root sul terminale, altrimenti non mi sarei preoccupato.

Non ho fatto alcuna di quelle operazioni che linki, a meno che non sia di default.

Nel mio sudoers c'è:

Only registered members can view code.

(ho filtrato i commenti perché se no era lunghissimo)

In sbin non gli script suggeriti in quella pagina e i permessi sembrano a posto (ma sono sicuro che non sono quelli i permessi in questione):

Only registered members can view code.

Kirk78
08-04-15, 23: 52
Only registered members can view code.
Forse dico una sciocchezzuola... ma questo non vuol dire che hai gli stessi permessi di root?
Io non ci sono con quei permessi su sudoers....

:bai

pierino_89
09-04-15, 00: 23
Sudoers presuppone usare sudo, se non ha scritto sudo è inutile guardarlo :tong2
Secondo me è qualche novità di systemd, dato che tutti e tre puntano a systemctl. Quindi suppongo sia questione di gruppi di appartenenza e/o configurazione di systemd.

Andy86
09-04-15, 00: 36
A me interessava soprattutto la questione sicurezza. Cioè la possibilità che uno script (maligno) potesse riavviarmi il pc a piacere. :tap

Gruppi di appartenenza... potrebbe essere il gruppo power? :m:


tutti e tre puntano a systemctl

Però shutdown non viene influenzato.
(halt non l'ho provato, l'ho visto nella pagina linkata da kirk).

pierino_89
09-04-15, 01: 22
Ti conviene cercare nella configurazione di systemd allora, probabilmente ha dei parametri per determinare chi può fare queste cose e chi no.

Andy86
09-04-15, 12: 32
:bai

In quale di preciso?


Only registered members can view code.

In resolved.conf, system.conf e user.conf è tutto commentato.

Comunque ho provato "halt" e chiede i permessi di root.
Quindi il problema è proprio di reboot.

MarcoStraf
09-04-15, 20: 15
Sono molto sorpreso perche' il comando reboot (che e' tipico di Linux) internalmente chiama la "reboot" system call, che richiede permessi di superuser.

Domanda stupida: sei sicuro che usi il giusto reboot e non magari un suo alias? Prova il comando
# which reboot
e guarda cosa ti dice. Se e' un link, usa il comando "file" per avere informazioni sul vero eseguibile
# file -L ...filename...

pierino_89
09-04-15, 20: 44
Marco, abbiamo già verificato che tutti i binari in questione in realtà puntano a systemctl, il tool di gestione di systemd (che rimpiazza il vecchio init e dunque gira come root), dunque la domanda è come configurare systemd per rimettere le cose come prima :eye

MarcoStraf
09-04-15, 20: 57
proprio perche' sia 'halt' che 'reboot' puntano allo stesso eseguibile ho chiesto se sia sicuro che non ci siano alias di mezzo e se sia sicuro che usi quelli giusti.

pierino_89
09-04-15, 21: 09
Non credo, è giusto che puntino allo stesso eseguibile. Busybox funziona allo stesso modo: è un solo eseguibile ma in base al nome con cui lo chiami fa cose diverse.

Con una breve ricerca ecco risolto l'arcano: systemd gestisce chi può spegnere/riavviare con policykit:
logind (http://www.freedesktop.org/wiki/Software/systemd/logind/)

Andy86
09-04-15, 21: 18
:bai

Chiarisssiiima quella pagina!!!! :tap

Comunque nel mio logind.conf, come per gli altri che dicevo al post #8 (http://www.collectiontricks.it/forum/gnu-linux/Ct6093-comando-reboot-funziona-sudo.html#post220759), è tutto commentato.


Per fare contento Marco:

Only registered members can view code.

pierino_89
09-04-15, 21: 29
:bai

Chiarisssiiima quella pagina!!!! :tap

Comunque nel mio logind.conf, come per gli altri che dicevo al post #8 (http://www.collectiontricks.it/forum/gnu-linux/Ct6093-comando-reboot-funziona-sudo.html#post220759), è tutto commentato.

E io mica ti ho detto di toccare logind.conf, ho detto che lo devi cambiare da policykit :ghgh
Mi ricordo che c'era un'icona nel pannello di kde per pasticciarlo, ma non mi ricordo più come si chiama. Probabilmente era un modulo aggiuntivo.

Andy86
09-04-15, 22: 17
:bai

Ho trovato solo questo:

3158

Però mi sembra più una cosa in generale.
Poi magari mi chiede la password ogni volta che spengo dal menù.

pierino_89
10-04-15, 00: 10
Prova, potrebbe essere un inizio.

Andy86
10-04-15, 00: 45
Niente, non è quello. Quello agisce solo su kdm (nel senso che quando si tenta di spegnere o riavviare dal menù start scende kde, ma poi esce una finestrella di kdm che chiede la password per continuare e se cancello torna al log-in); il comportamento di reboot rimane quello.

Forse quello a cui ti riferisci tu è questo: Where is the KDE PolicyKit Authorization manager in Kubuntu? - Ask Ubuntu (http://askubuntu.com/questions/250047/where-is-the-kde-policykit-authorization-manager-in-kubuntu), ma il pacchetto "kde-workspace" ce l'ho installato e anche il pacchetto "polkit 0.112-2 - Application development toolkit for controlling system-wide privileges" che contiene i seguenti eseguibili:

Only registered members can view code.

Però in impostazioni di sistema non appare nulla di lontanamente simile. (c'è un "permessi" ma è di k3b, mi sembra strano che vada a sovrascrivere roba di sistema).

:notte:

pierino_89
10-04-15, 02: 02
Forse quello a cui ti riferisci tu è questo: Where is the KDE PolicyKit Authorization manager in Kubuntu? - Ask Ubuntu (http://askubuntu.com/questions/250047/where-is-the-kde-policykit-authorization-manager-in-kubuntu), ma il pacchetto "kde-workspace" ce l'ho installato e anche il pacchetto "polkit 0.112-2 - Application development toolkit for controlling system-wide privileges"
Eh, ma se leggi bene sotto c'e scritto "si sono dimenticati di pacchettizzare polkit-kde" :ghgh
https://bugs.launchpad.net/ubuntu/+source/polkit-kde-1/+bug/575428

Andy86
10-04-15, 13: 20
:bai

Quello però sembra un bug di ubuntu più che di kde in generale.
Tra i pacchetti installati vedo anche "policy-kde-agent" ma non contiene eseguibili.

Andy86
14-09-15, 12: 00
:bai

Sorpassati tutti gli impegni prioritari mi sono ricordato di questa cosa, però dopo tutti questi mesi è rimasto ancora tutto come prima, non vedo ancora nessun settaggio grafico nelle impostazioni di sistema.

C'è sempre quel pacchetto che ho citato prima:


Only registered members can view code.

Dal secondo comando ho escluso /usr/share/locale perché c'era un castello di localizzazioni. :boh

Ho notato che se chiamo quel file in "libexec" mi dice "PolicyKitKDE is already running!", non accetta parametri e non c'è il man.
Il .desktop in autostart non fa altro che lanciare quel comando così com'è. :boh

Attraverso il taskmanager ho notato che c'è un tal servizio polkitd:


Only registered members can view code.

Di cui c'è un man che sembra un testo universitario. :shock

Possibile che al di là di quello non c'è alcun sistema di scegliere quei settaggi attraverso il terminale?
Da qualche parte dovrà pur salvare quelle preferenze, no?

pierino_89
14-09-15, 13: 55
Ho notato che se chiamo quel file in "libexec" mi dice "PolicyKitKDE is already running!", non accetta parametri e non c'è il man.
Il .desktop in autostart non fa altro che lanciare quel comando così com'è. :boh

Per l'appunto la roba in libexec si suppone che non debba essere lanciata da te :ghgh
Quello è l'agent di KDE, che serve per far colloquiare il desktop con il servizio polkit.



Attraverso il taskmanager ho notato che c'è un tal servizio polkitd:


Only registered members can view code.

Di cui c'è un man che sembra un testo universitario. :shock
Per forza, quello è per l'appunto il servizio. Sicuramente nel man troverai quello che ti serve in mezzo a tutto il resto, ma fai prima a cercare su google.



Possibile che al di là di quello non c'è alcun sistema di scegliere quei settaggi attraverso il terminale?
Da qualche parte dovrà pur salvare quelle preferenze, no?
Per l'appunto:
https://wiki.archlinux.org/index.php/Polkit

Andy86
14-09-15, 14: 37
:bai

Allora, tutti i file che vengono menzionati in quell'articolo non ce li ho, a parte il default che però dice di non editarlo perché viene sovrascritto in automatico.

Tra l'altro non c'è nulla che spieghi, anche in caso di creazione del file, come impostare i permessi di reboot, quindi come faccio io a sapere l'action-id di reboot per poter tentare la creazione del file? :boh

pierino_89
14-09-15, 14: 52
:bai

Allora, tutti i file che vengono menzionati in quell'articolo non ce li ho, a parte il default che però dice di non editarlo perché viene sovrascritto in automatico.
È normale, dato che dice di crearli se ti servono :ghgh



Tra l'altro non c'è nulla che spieghi, anche in caso di creazione del file, come impostare i permessi di reboot, quindi come faccio io a sapere l'action-id di reboot per poter tentare la creazione del file? :boh
Eh ma come la fai lunga :tong2


Polkit definitions can be divided into two kinds:


Actions are defined in XML .policy files located in /usr/share/polkit-1/actions. Each action has a set of default permissions attached to it (e.g. you need to identify as an administrator to use the GParted action). The defaults can be overruled but editing the actions files is NOT the correct way.




Only registered members can view code.

Andy86
14-09-15, 16: 12
:bai

Quindi l'azione che mi serve è "org.freedesktop.login1.reboot"?

Ma il nome che creo alla rules lo posso dare come voglio, come se fosse una variabile?
Perché vedo che i file sono preceduti da numeri, altrimenti dovrei sapere il criterio di quei numeri. :ohoh

Poi se ho capito bene dovrebbe andare una cosa tipo questa?


Only registered members can view code.

pierino_89
14-09-15, 16: 18
Ad occhio sì, ha senso.
Il nome del file è irrilevante, serve solo a te per ricordarti cosa ci hai messo dentro. Il numero indica in che ordine vengono caricate le regole, e solitamente non ti interessa (di norma le regole utente vengono inserite come 99 per ricordarsi che è roba tua e viene caricata per ultima).

Andy86
14-09-15, 19: 52
:bai

Niente da fare. :wall

Ho creato il file come impostato sopra in /etc/polkit-1/rules.d e l'ho chiamato 99-reboot-sudo.rules, ma il sistema l'ha bellamente ignorato.
Ovviamente ho riprovato dopo il primo riavvio, quindi, in teoria avrebbe dovuto leggerlo per forza. :boh

Rileggendo la discussione ho anche provato a togliermi dal gruppo "power" (post #5 e #6) ma niente ancora.

pierino_89
14-09-15, 20: 20
Guarda nel log se gli è piaciuto o se ha trovato qualche errore nel file :eye

Andy86
14-09-15, 20: 50
Scusa, ma se per provare lo riavvio come lo vado a prendere il log se riporta solo il boot corrente? :m:

pierino_89
14-09-15, 20: 55
Beh, se per provare lo riavvii, si suppone che il servizio venga avviato nel boot corrente :tong2
Comunque hai sicuramente anche i log dei boot precedenti.

Andy86
14-09-15, 21: 11
Beh... i vari /var/log/syslog.log.X sono tutti vuoti.

In journalctl non trovo niente con polkit, rules e parti del nome del file, però è lunghissimo, e ci sono diversi errori legati a glibc++/ptrhread o roba del genere (che però non vorrei fossero gli stessi nel log di xorg, che ho postato nell'altro thread).

pierino_89
14-09-15, 21: 28
A guardare meglio, le parentesi sono decisamente sbagliate nel codice che hai postato. Comunque guarda qui: linux - What is the correct way to prevent non-root users from issuing shutdowns or reboots - Super User (http://superuser.com/questions/354678/what-is-the-correct-way-to-prevent-non-root-users-from-issuing-shutdowns-or-rebo)

Andy86
14-09-15, 21: 52
:shock è vero, non so come ho fatto a non accorgermi. http://srp.saxovts.it/forum/images/smilies/asino.gif

Ho aggiunto le due parentesi che mancavano, adesso il codice è come quello nel link, ad eccezione del controllo sullo shutdown e dello strano valore restituito.

Se non capisce ancora provo a creare l'altro file e fare il return come nel link.

Andy86
18-09-15, 22: 11
:bai

Niente da fare.

Ho inserito il file pari-pari come spiegato nel link, nome compreso, si riavvia sempre. :boh

Leggendo bene mi pare che il secondo file che viene indicato nel link sia per le versioni di policykit inferiori alla 0.105, io ho la versione 0.112.

pierino_89
19-09-15, 14: 45
Beh, difatti devi usare solo il primo :ghgh

Andy86
19-09-15, 14: 50
Infatti è quello che ho fatto. Intendevo che il secondo file non l'ho usato per quel motivo.

Però si riavvia in ogni caso.

Nel 3247 non ho idea di che cosa cercare.