Come configurare correttamente il file sudoers, su debian wheezy?


10

Ho visto molti post sul blog che dicono, è abbastanza da fare

aptitude install sudo
su root
adduser USERNAME sudo

Ma questo protegge solo aptitude, in altre parole:

  • aptitude install sendmailchiederà la password, devi essere sudoper eseguireaptitude

  • apt-get install sendmailnon chiederà la password, non sono sudonecessari privilegi

  • Se modifichi file protetti, come i file in etcesso contenuti non richiederai password, non sono sudonecessari privilegi

  • È possibile eseguire e interrompere servizi come apache, non richiede password, non sono sudonecessari privilegi

Come risolvere questo? Questo è il mio file sudoers:

 This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$

# Host alias specification

# User alias specification

# Cmnd alias specification

Questo è l'output di sudo -l:

Matching Defaults entries for root on this host:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User root may run the following commands on this host:
    (ALL : ALL) ALL
    (ALL : ALL) ALL

3
Dopo su root, hai effettuato l'accesso come rootutente, quindi hai pieno accesso a tutto. Per tornare ad essere un uso regolare che deve utilizzare sudoper operazioni privilegiate, disconnettersi dalla shell in esecuzione come root.
depquid

Sono nuovo in Linux, ma Debian wiki dice - nome utente adduser sudo wiki.debian.org/sudo
AntiCZ

Risposte:


16

Non hai aggiunto alcuna regola sudo, quindi non puoi usare sudo per nulla.

Il comando adduser USERNAME sudoaggiunge l'utente specificato al gruppo chiamato sudo. Deve esistere un gruppo con quel nome; crealo con addgroup sudose non lo fa. Dopo aver aggiunto l'utente al gruppo, l'utente deve disconnettersi e riconnettersi per rendere effettiva l'appartenenza al gruppo.

sudonon è un nome di gruppo speciale. È una convenzione per consentire agli utenti del gruppo chiamato sudodi eseguire comandi come root tramite l' sudoutilità. Ciò richiede la seguente riga nel sudoersfile:

%sudo ALL = (ALL) ALL

Esegui visudoper modificare il file sudoers, non modificarlo mai direttamente.

Non ho idea del perché credi che "questo protegge solo l'attitudine". Non c'è niente di speciale in attitudine. Dopo aver autorizzato un utente ad eseguire comandi come root, quell'utente può eseguire sudo aptitude …o sudo apt-get …o sudo service …, o sudoeditmodificare i file che richiedono l'autorizzazione di root per la modifica. Essere nel file sudoers non modifica direttamente i privilegi dell'utente, ma consente sudodi eseguire i comandi come root. I comandi vengono eseguiti come root solo quando vengono eseguiti sudo. Alcuni programmi possono farlo automaticamente, in particolare i programmi GUI in cui l'interfaccia utente viene eseguita senza privilegi speciali e solo il backend viene eseguito come root, ma i comandi eseguiti come root vengono sempre eseguiti da sudo.


Ha funzionato sudo -lcome root. Anche se ci fossero definizioni utili per gli utenti, non sarebbero state mostrate. Quindi la tua ipotesi "Non hai aggiunto alcuna regola sudo" potrebbe essere errata.
Hauke ​​Laging,

@HaukeLaging Non capisco il tuo commento. "Non hai aggiunto alcuna regola sudo" non è un'ipotesi: il sudoersfile è nella domanda.
Gilles 'SO-smetti di essere malvagio' il

Ero quasi depresso, rendendomi conto che ero troppo concentrato sudo -lsull'output ma per fortuna ... Sembra che il contenuto della domanda non possa essere l'intero file perché non è coerente con l'output. Almeno la mia sudoversione non afferma "L'utente root può eseguire i seguenti comandi" con un sudoerssenza alcuna definizione di comando (come quello nella domanda).
Hauke ​​Laging

@HaukeLaging Hai ragione, ho controllato con wheezy e in effetti sudo -ldice semplicemente "Il root dell'utente non può eseguire sudo su darkstar.". E il sudogruppo è nel file sudoers di default su wheezy. Le voci richieste potrebbero essere state spostate in un file in /etc/sudoers.d. In ogni caso, qualunque sia il file sudoers, non farebbe ciò che Fischer presume.
Gilles 'SO- smetti di essere malvagio'

4

Quello che può essere successo è: sudo sta memorizzando nella cache la tua password. Quindi, dopo aver completato correttamente l'implementazione di sudo sul tuo sistema, devi inserire la password per il primo comando, e successivamente viene memorizzata nella cache per qualche tempo. Se ciò accade e si esegue la sequenza

sudo aptitude install sendmail
sudo apt-get install sendmail

Quindi dovrai fornire una password sul primo comando, ma non sul secondo (almeno mentre sei ancora nel timeout). Questo può sentire come sta proteggendo solo il primo comando, ma non il secondo. Senza ulteriori informazioni (trascrizioni complete della shell), non c'è modo di dire ...


Sì. L'uno non esclude l'altro. La risposta corretta spiega bene come impostare correttamente sudo e, in tal senso, risponde alla domanda. Non spiega perché, nelle parole della domanda, "ciò protegge solo l'attitudine". Scrive Gilles: "Non ho idea del perché credi che" questo protegge solo l'attitudine "". Come ho detto, per capire davvero quel fenomeno, sono necessarie ulteriori informazioni. Penso che un downvote sia un po 'duro dato che la mia risposta è effettivamente corretta, affronta la domanda originale e colma una lacuna nella risposta esistente.
Josef

Buona idea, questa potrebbe essere la fonte della confusione di Fischer.
Gilles 'SO- smetti di essere malvagio'

0

Se segui la risposta sopra, stai andando nel modo giusto. Almeno nella mia Debian Jessie, ho creato un collegamento soft a / usr / bin del comando nel percorso / sbin. Ad esempio: / sbin / ifup, ho inserito un link soft (ln -s) in / usr / bin e posso usarlo.

Un'altra cosa importante è mettere NOPASSWD in questo modo:

User_Alias NET = goviedo
Cmnd_Alias ETH = /sbin/ifup
NET ALL = NOPASSWD:ETH
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.