My sudo version is
$ sudo --version
Sudo version 1.8.16
Sudoers policy plugin version 1.8.16
Sudoers file grammar version 45
Sudoers I/O plugin version 1.8.16
$ which sudo
/usr/bin/sudo
$ whereis sudo
sudo: /usr/bin/sudo /usr/lib/sudo /usr/share/man/man8/sudo.8.gz
I added a line to /etc/sudoers
following the line for root
:
# User privilege specification
root ALL=(ALL:ALL) ALL
# my change for scaling down cpu freq
t ALL=(ALL) NOPASSWD: /home/t/program_files/hardware/cpu/cpuFreq/changeCpuFreq.sh
But after I reboot Ubuntu 16.04, I still need to provide password when running the script with sudo
:
$ sudo /home/t/program_files/hardware/cpu/cpuFreq/changeCpuFreq.sh 1600000
[sudo] password for t:
I was wondering why?
Note that in /etc/sudoers
,
I notice that the separator between
root
andALL
is a tab, and I also separatet
andALL
with a tab, and the other separators are spaces. Originally I separatedt
andALL
with a few spaces, which didn't work. Does what the separator is matter?/home/t/program_files/hardware/cpu/cpuFreq/changeCpuFreq.sh
is pathname without any symlink, and originally, I tried a symlink, which didn't work. Does a symlink matter or not?
Thanks.
Update:
As the reply by steve suggested, I changed the line in /etc/sudoers
to be
t ALL=(ALL) NOPASSWD: /home/t/program_files/hardware/cpu/cpuFreq/changeCpuFreq.sh *
by adding *
at the end, but it doesn't work.
Currently my /etc/sudoers
looks like
#
# 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:/snap/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# my change for scaling down cpu freq
# t ALL=(ALL:ALL) NOPASSWD: /home/t/program_files/hardware/cpu/cpuFreq/changeCpuFreq.sh *
t ALL=(ALL:ALL) NOPASSWD: /home/t/program_files/hardware/cpu/cpuFreq/changeCpuFreq.sh *
# 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
The groups of t
include adm
(is adm
same as admin
?) and sudo
:
$ groups t
t : t adm cdrom sudo dip plugdev lpadmin sambashare
The commands allowed to be run by t
are:
$ sudo -l
Matching Defaults entries for t on ocean:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User t may run the following commands on ocean:
(ALL : ALL) NOPASSWD:
/home/t/program_files/hardware/cpu/cpuFreq/changeCpuFreq.sh *
(ALL : ALL) ALL
sudo
or theadmin
group? – Rui F Ribeiro Apr 01 '18 at 21:40sudo -l
when logged in as user "t" ? – steve Apr 01 '18 at 21:42adm
same asadmin
group? – Tim Apr 01 '18 at 21:54admin
andadm
are not the same. You can tell because one of them has anin
in it. – jwodder Apr 01 '18 at 22:27