Dette er et ganske komplekst spørsmål knyttet til Sudoers-filen og sudo-kommandoen generelt.
MERK: Jeg har gjort disse endringene på en dedikert maskin som kjører Ubuntu Desktop 13.04, som jeg bare bruker til læringsformål. Jeg forstår at det er en enorm sikkerhetsrisiko å aktivere NOPASSWD sudo.
Opprinnelig var min eneste endring i sudoers-filen (/etc/sudoers) en linje, en brukerspesifikasjon som burde ha gjort det mulig for ' nicholsonjf & 39; å kjøre alle kommandoer med sudo uten å måtte oppgi passord (se linjen som starter med ' nicholsonjf & 39;):
# 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:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
nicholsonjf ALL=NOPASSWD: ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
Dette fungerte imidlertid ikke, og jeg ble fortsatt bedt om passordet mitt hver gang jeg kjørte en kommando som 'nicholsonjf'. Jeg kunne bare begynne å kjøre sudo-kommandoer som 'nicholsonjf' når jeg fjernet 'nicholsonjf' fra sudo- og admin-gruppene.
Kan noen forklare hvorfor dette fungerte?
Er det fordi brukeren ' nicholsonjf ' arvet sudo-rettigheter fra de to gruppespesifikasjonene til ' admin ' og ' sudo ' (sett nedenfor i sudoers-filen), som overstyrte ' nicholsonjf ' brukerspesifikasjonen fordi de var lenger nede i konfigurasjonsfilen?
Linjen du la til ble overstyrt. Fra man sudoers
:
Når flere oppføringer samsvarer for en bruker, brukes de i rekkefølge. Hvis det er flere treff, brukes det siste treffet (som ikke nødvendigvis er det mest spesifikke treffet).
I ditt tilfelle var nicholsonjf
medlem av gruppen sudo
, så for ham gjelder denne linjen:
%sudo ALL=(ALL:ALL) ALL
Hvis du vil overstyre oppføringer i /etc/sudoers
, setter du bare de nye oppføringene etter dem.
Den nye oppføringen skal se slik ut
myuser ALL=(ALL) NOPASSWD: ALL` for en enkelt bruker, eller
%sudo ALL=(ALL) NOPASSWD: ALL
for en gruppe.
For en enkelt bruker legger du til denne linjen på slutten av sudoers
-filen ved hjelp av sudo visudo
.
superuser ALL=(ALL) NOPASSWD: ALL
For en gruppe
%supergroup ALL=(ALL) NOPASSWD: ALL