Não é possível executar um script sudo sem senha?

0

Estou usando o arch linux - i3. Eu tenho um script para executar rmmod hid-multitouch && sudo modprobe hid-multitouch . Eu editei a tecla de atalho no i3 e configurei uma exceção para executar um script sem senha usando sudo visudo para remover o comentário e adicionar as linhas

%wheel ALL=(ALL) NOPASSWD: /home/hieuc/i3script/rmod_hid.sh a hieuc ALL=(ALL) NOPASSWD: /home/hieuc/i3script/rmod_hid.sh
Mas parece que não está funcionando direito, mas alguns dias atrás ainda funcionou para mim. Aqui está uma saída de /etc/sudoers

## sudoers file.
##
## This file MUST be edited with the 'visudo' command as root.
## Failure to use 'visudo' may result in syntax or file permission errors
## that prevent sudo from running.
##
## See the sudoers man page for the details on how to write a sudoers file.
##

##
## Host alias specification
##
## Groups of machines. These may include host names (optionally with wildcards),
## IP addresses, network numbers or netgroups.
# Host_Alias    WEBSERVERS = www1, www2, www3

##
## User alias specification
##
## Groups of users.  These may consist of user names, uids, Unix groups,
## or netgroups.
# User_Alias    ADMINS = millert, dowdy, mikef

##
## Cmnd alias specification
##
## Groups of commands.  Often used to group related commands together.
# Cmnd_Alias    PROCESSES = /usr/bin/nice, /bin/kill, /usr/bin/renice, \
#               /usr/bin/pkill, /usr/bin/top
# Cmnd_Alias    REBOOT = /sbin/halt, /sbin/reboot, /sbin/poweroff

##
## Defaults specification
##
## You may wish to keep some of the following environment variables
## when running commands via sudo.
##
## Locale settings
# Defaults env_keep += "LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET"
##
## Run X applications through sudo; HOME is used to find the
## .Xauthority file.  Note that other programs use HOME to find   
## configuration files and this may lead to privilege escalation!
# Defaults env_keep += "HOME"
##
## X11 resource path settings
# Defaults env_keep += "XAPPLRESDIR XFILESEARCHPATH XUSERFILESEARCHPATH"
##
## Desktop path settings
# Defaults env_keep += "QTDIR KDEDIR"
##
## Allow sudo-run commands to inherit the callers' ConsoleKit session
# Defaults env_keep += "XDG_SESSION_COOKIE"
##
## Uncomment to enable special input methods.  Care should be taken as
## this may allow users to subvert the command being run via sudo.
# Defaults env_keep += "XMODIFIERS GTK_IM_MODULE QT_IM_MODULE QT_IM_SWITCHER"
##
## Uncomment to use a hard-coded PATH instead of the user's to find commands
# Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
##
## Uncomment to send mail if the user does not enter the correct password.
# Defaults mail_badpass
##
## Uncomment to enable logging of a command's output, except for
## sudoreplay and reboot.  Use sudoreplay to play back logged sessions.
# Defaults log_output
# Defaults!/usr/bin/sudoreplay !log_output
# Defaults!/usr/local/bin/sudoreplay !log_output
# Defaults!REBOOT !log_output

##
## Runas alias specification
##

##
## User privilege specification
##
root ALL=(ALL) ALL

## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL) ALL

## Same thing without a password
%wheel ALL=(ALL) NOPASSWD: /home/hieuc/i3script/rmod_hid.sh
## User
hieuc ALL=(ALL) NOPASSWD: /home/hieuc/i3script/rmod_hid.sh

## Uncomment to allow members of group sudo to execute any command
# %sudo ALL=(ALL) ALL

## Uncomment to allow any user to run sudo if they know the password
## of the user they are running the command as (root by default).
# Defaults targetpw  # Ask for the password of the target user
# ALL ALL=(ALL) ALL  # WARNING: only use this together with 'Defaults targetpw'

## Read drop-in files from /etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /etc/sudoers.d

Meu script:

#! /bin/bash

sudo rmmod hid-multitouch && sudo modprobe hid-multitouch

Aqui está minha chave de acesso em i3 bindsym $mod+Shift+o exec $HOME/i3script/rmod_hid.sh

    
por HieuC 23.09.2018 / 12:57

3 respostas

2

Assumindo que /home/hieuc/i3script/rmod_hid.sh é seu script, você poderá executar sudo /home/hieuc/i3script/rmod_hid.sh sem precisar de uma senha. Os direitos sudo aplicam o comando especificado, não aos comandos chamados de um script chamado na configuração do sudo.

Seu script, por outro lado, não requer o sudo, já que ele é executado como root.

#! /bin/bash
rmmod hid-multitouch && modprobe hid-multitouch

Se você quiser chamar seu script sem sudo, verifique o ID do usuário:

#! /bin/bash
test "$(id -u)" != 0 && exec sudo /home/hieuc/i3script/rmod_hid.sh "$@"
rmmod hid-multitouch && modprobe hid-multitouch

Isso será chamado com sudo se foi chamado sem sudo . O script chamado com sudo executará os comandos na última linha como raiz.

    
por 23.09.2018 / 13:38
1
hieuc ALL=(ALL) NOPASSWD: /home/hieuc/i3script/rmod_hid.sh

Esta linha no arquivo sudoers permite que o usuário hieuc execute /home/hieuc/i3script/rmod_hid.sh com sudo sem solicitar uma senha. Por exemplo:

hieuc$: sudo ~/i3script/rmod_hid.sh

Como o script já está sendo executado como root, você não precisa usar sudo dentro do script.

Note que ter um arquivo gravável pelo usuário que pode ser executado usando sudo significa que o usuário pode executar qualquer comando como root (modificando o script).

    
por 23.09.2018 / 13:41
1

O script que você mencionou em sudoers é o script que você executará com sudo .

Então, se você quiser fazer sudo /home/me/my-script , então /home/me/my-script deve ser mencionado em sudoers

No seu caso, você pode adicionar modprobe hid-multitouch a sudoers

Você também pode escrever script1 para conter sudo script2

e coloque o script 2 em sudoers .

por exemplo.

script1 é chamado pelo código da tecla de atalho. Não é mencionado em suderes contém:

#!/bin/bash
script_called_as="$0"
script_full_name="$(readlink -e "$script_called_as")"
script_dir="$(dirname "$script_full_name")"

sudo "$script_dir/«script2»"

Substitua «script2» pelo nome do seu script. Então diga sudeers sobre seu script2 (não script1)

    
por 23.09.2018 / 13:26