Come fare di nuovo / sbin / shutdown, / sbin / reboot ecc. Sudo in 16.04?


18

Per qualsiasi motivo, non è più necessario essere root (o utilizzare sudo) per l'esecuzione /sbin/shutdown, /sbin/rebootecc.

Ciò sembra essere dovuto al fatto che quei file eseguibili sono ora collegamenti simbolici ai /bin/systemctlquali gestisce tutto come un normale utente.

Tuttavia, cosa succede se desidero shutdowne rebootrichiedere nuovamente l'autenticazione root? Come posso raggiungere questo obiettivo?


3
Immagino le regole del polkit. Modifica askubuntu.com/a/570969/158442 secondo necessità (utilizza pkaction | grep login1per altre regole di interesse)
— muru

3
(un esempio di regole per richiedere i privilegi di amministratore: askubuntu.com/a/744094/158442 )
— muru,

1
Non è questo solo se sei l'unica persona che ha effettuato l'accesso. Se nel sistema è presente qualcun altro, ti verrà chiesto di inserire la password di root.
— ognjen,

Potrebbe non essere la risposta che ti aspetti, ma un comportamento simile può essere causato da un altro utente amministratore che ha modificato il tuo '/ etc / sudoers'. Se questo è ciò che sta causando il problema, è possibile modificarlo nuovamente digitando sudo visudoe verificare se esiste una riga con il percorso di questi eseguibili.
— Damien,

Risposte:


5

Systemd gestisce effettivamente il shutdown, reboote altri comandi, e i privilegi predefiniti assegnati sono permissivi. Per cambiarlo, devi creare una regola Polkit. Crea un .pklafile in /etc/polkit-1/localauthority/50-local.d(diciamo confirm-shutdown.pkla) contenente:

[Confirm shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.*
ResultActive=auth_admin_keep

I vari spegnimento, riavvio, ecc comandi sono, in termini polkit, azioni org.freedesktop.login1, per esempio, org.freedesktop.login1.power-off, org.freedesktop.login1.reboot, ecc Il problema specifico qui è la configurazione di default, che è in /usr/share/polkit-1/actions/org.freedesktop.login1.policy:

<action id="org.freedesktop.login1.power-off">
        <description>Power off the system</description>
        ...
        <defaults>
                <allow_any>auth_admin_keep</allow_any>
                <allow_inactive>auth_admin_keep</allow_inactive>
                <allow_active>yes</allow_active>
        </defaults>

Si noti che consente all'utente attivo di spegnere, riavviare, ecc.


0

Puoi usare il chmodcomando.

  • Se vuoi dare accesso solo al root, puoi scrivere:

    chmod 700 directory/to/the/file
    
  • Se vuoi dare il permesso alla radice e al gruppo sudo, puoi scrivere:

    chmod 770 directory/to/the/file
    
  • Se vuoi cambiare il gruppo del file da sudo a un altro (come un utente o amministratori) devi digitare:

    chown owner:group directory/to/the/file
    
  • Se vuoi tornare indietro, esegui:

    chown root:sudo filedirectory 
    

Nota : potrebbe essere necessario utilizzare sudoquesti comandi o aver effettuato l'accesso all'account root


Si noti che il tentativo di modificare le autorizzazioni del collegamento modificherà le autorizzazioni della destinazione (in questo caso /bin/systemctl), quindi l'esecuzione di chmod / sbin / shutdown avrà un impatto su tutti i collegamenti che indicano /bin/systemctlcome le autorizzazioni bin/systemctlverranno modificate come confermato dal comando $ ll /bin/systemctl -rwx ------ 1 radice radice 659848 18 gennaio 16:04 / bin / systemctl *
— Elder Geek

Se è necessario ripristinarlo, le autorizzazioni predefinite sono-rwxr-xr-x 1 root root 659848 Jan 18 16:04 /bin/systemctl
— Elder Geek,


-1

È possibile creare uno script che controlli se l'utente lo sta eseguendo con autorizzazioni di root o meno.
Quindi eseguirà il comando systemctl o restituirà un errore.

#! / Bin / bash
if ["$ (whoami)"! = "root"]; poi
    echo "Siamo spiacenti, non sei root."
    uscita 1
altro
    (comando di spegnimento del sistema)
fi

fonte


4
Cosa impedisce a un utente non root di ignorare semplicemente questo script?
— Robie Basak,

-1

Prova a cambiare le sue autorizzazioni nel terminale. Potresti renderlo eseguibile solo da un determinato gruppo, come wheel o admin. Purtroppo (o forse per fortuna), un file può avere solo un gruppo di proprietà, quindi chown semplicemente non funzionerebbe da solo. Prova "sudo chown root: wheel / sbin / shutdown" e poi "sudo chmod g + x / sbin / shutdown". Questo renderà il file eseguibile solo da root e gli amministratori (shudder) e i sudoer dovranno inserire le loro password.


2
Il gruppo "wheel" fa parte di Arch Linux e forse di altre distribuzioni, ma sicuramente non su Ubuntu a proposito.
— Byte Commander

2
Questo non è efficace. Un utente può semplicemente scaricare un file binario di sistema da qualche altra parte ed eseguirlo invece.
— Robie Basak,

@Robie, potresti farlo con qualsiasi soluzione. È possibile tenere premuto il pulsante di accensione. La mia soluzione funziona per quello che chiede.
— chevydog,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.