Minha versão do sudo é
$ 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
Adicionei uma linha a /etc/sudoers
seguindo a linha de 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
Mas depois que eu reinicio o Ubuntu 16.04, eu ainda preciso fornecer uma senha ao executar o script com sudo
:
$ sudo /home/t/program_files/hardware/cpu/cpuFreq/changeCpuFreq.sh 1600000
[sudo] password for t:
Eu estava me perguntando por quê?
Observe que em /etc/sudoers
-
Noto que o separador entre root
e ALL
é uma guia e também separo t
e ALL
com uma guia e os outros separadores são espaços. Originalmente eu separei t
e ALL
com alguns espaços, o que não funcionou. O que o separador é importante?
-
/home/t/program_files/hardware/cpu/cpuFreq/changeCpuFreq.sh
é o nome do caminho sem qualquer link simbólico e, originalmente, tentei um link simbólico, que não funcionou. Um link simbólico é importante ou não?
Obrigado.
Atualização:
Como a resposta de steve sugeriu, eu mudei a linha em /etc/sudoers
para ser
t ALL=(ALL) NOPASSWD: /home/t/program_files/hardware/cpu/cpuFreq/changeCpuFreq.sh *
adicionando *
no final, mas não funciona.
Atualmente meu /etc/sudoers
parece
#
# 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
Os grupos de t
incluem adm
(é adm
igual a admin
?) e sudo
:
$ groups t
t : t adm cdrom sudo dip plugdev lpadmin sambashare
Os comandos permitidos para serem executados por t
são:
$ 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