Por que o NOPASSWD no visudo no Linux Mint 18 não funciona

0

Este é um arquivo sudoers que eu tenho em um servidor Debian 9 e funciona . /etc/sudoers contém:

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
# the following line I've added for sudo to work on Debian, which by default does not
vlastimil   ALL=(ALL:ALL) ALL
# and this line I've added just now, so I could enable / disable teamviewer daemon as I wish
vlastimil   ALL = (root) NOPASSWD: /usr/bin/teamviewer

# 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

Significado Agora posso executar, por exemplo o seguinte sem digitar a senha:

sudo teamviewer daemon disable
sudo teamviewer daemon enable

Este, no entanto, é um arquivo sudoers não-funcional no Linux Mint 18 em certo sentido, ele ainda me pede senha. /etc/sudoers contém:

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
# this line I've added myself, because I felt it is needed, however user vlastimil has had sudo access all the time, added just now
vlastimil   ALL=(ALL:ALL) ALL
# and this line I've added just now, so I could enable / disable teamviewer daemon as I wish, but it does not work
vlastimil   ALL = (root) NOPASSWD: /usr/bin/teamviewer

# 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

Eu acho que há alguma diferença entre o Debian e o Mint, o que faz com que as linhas adicionadas não funcionem.

Eu li respostas diferentes, como nesta página:

Como executar um programa específico como root sem um prompt de senha?

Mas eu não sou inteligente disso.

EDIT1:

A primeira resposta dá ao Linux Mint um erro estranho:

$ sudo /usr/bin/teamviewer
 Init...
 *** TeamViewer can not be executed with sudo! ***
 Either use your normal user account without sudo
 or use a the real root account to log in to your desktop (not recommended!).

Eu também não entendo isso.

$ which teamviewer
/usr/bin/teamviewer

$ file /usr/bin/teamviewer
/usr/bin/teamviewer: symbolic link to /opt/teamviewer/tv_bin/script/teamviewer

$ file /opt/teamviewer/tv_bin/script/teamviewer 
/opt/teamviewer/tv_bin/script/teamviewer: Bourne-Again shell script, ASCII text executable

$ cat /opt/teamviewer/tv_bin/script/teamviewer
#!/bin/bash

# If you see this message, you probably attempted to start TeamViewer.
# Please open a terminal (Konsole, gnome-terminal, xterm),
# navigate to this folder (type 'cd /path/to/teamviewer' [Enter])
# then execute TeamViewer (type './teamviewer' [Enter])


TV_SCRIPT_DIR="$(dirname "$(readlink -e "$0")")"
source "$TV_SCRIPT_DIR/tvw_main"

Main "$@"

EDIT2:

Por exemplo, no AskUbuntu, como sugerido nos comentários:

Por que a opção NOPASSWD dos sudoers não funciona?

e em muitos outros lugares, há uma solução em que eles colocam a regra de regra de administrador após . Eu tentei, até reinicializei depois, mas ainda não está funcionando.

    
por Vlastimil 31.10.2017 / 17:51

3 respostas

2
# this line I've added myself, because I felt it is needed, however user vlastimil has had sudo access all the time, added just now
vlastimil   ALL=(ALL:ALL) ALL
# and this line I've added just now, so I could enable / disable teamviewer daemon as I wish, but it does not work
vlastimil   ALL = (root) NOPASSWD: /usr/bin/teamviewer

Esse primeiro comentário sugere que seu usuário é membro do grupo sudo , que é como os usuários do Linux Mint obtêm sudo de acesso por padrão. E a regra do grupo sudo vem depois:

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

A última regra de correspondência vence. Não importa que vlastimil tenha uma regra NOPASSWD antes, quando essa regra posterior também se aplica. A regra NOPASSWD deve vir depois desta. É por isso que usar um arquivo em /etc/sudoers.d funciona, porque esses arquivos são incluídos por último:

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

Se você for adicionar vários arquivos a sudoers.d , use uma convenção de nome de arquivo numerada ( XX-somefile ), para poder classificá-los de forma confiável e garantir a precedência das regras.

    
por 01.11.2017 / 08:26
0

Uma solução no Linux Mint 18.2 que é baseada no Ubuntu 16.04 está criando um arquivo sudoers separado usando visudo , por exemplo:

sudo visudo -f /etc/sudoers.d/teamviewer

e colocando a linha extra:

vlastimil   ALL = (root) NOPASSWD: /usr/bin/teamviewer

para ele. Pode muito bem ser também a solução mais elegante, mas isso é uma questão de opinião.

    
por 31.10.2017 / 23:01
-1

Esse é o caminho absoluto definido para o teamviewer binário.

Por que não tentar o seguinte como o vlastimil user

$ sudo /usr/bin/teamviewer

    
por 31.10.2017 / 18:26