これは私が持っているsudoersファイルです。Debian 9サーバーとそれ働く。 /etc/sudoers
含む:
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
これは、パスワードを入力しなくても次のコマンドを実行できることを意味します。
sudo teamviewer daemon disable
sudo teamviewer daemon enable
しかし、これは非動作sudoersファイルLinux Mint 18ある意味、まだ私のパスワードを聞いているようです。/etc/sudoers
含む:
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
追加された行が機能しないようにするDebianとMintの間にはいくつかの違いがあるようです。
このページで他の回答を読みました。
パスワードを要求せずにルートで特定のプログラムをどのように実行できますか?
しかし、私はそれについてスマートではありません。
編集1:
最初の答えはLinux Mintで奇妙なエラーを引き起こします。
$ 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!).
私もこれを理解していません。
$ 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 "$@"
編集2:
たとえば、AskUbuntuの場合、コメントで提案されているとおりです。
sudoers NOPASSWDオプションが機能しないのはなぜですか?
他の多くの場所に解決策があり、彼らが支配するでしょう。後ろに管理者グループのルール。試してみて、後で再起動してみましたが、まだ機能しません。
答え1
# 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
最初のコメントは、ユーザーがグループのメンバーであることを示しますsudo
。これは、Linux Mintユーザーがsudo
デフォルトでアクセス権を取得する方法です。その後、グループのルールがsudo
導入されました。
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
これ最後一致ルールが勝ちます。将来のルールも適用される場合、以前のvlastimil
ルールは重要ではありません。NOPASSWD
このNOPASSWD
規則はこの規則の後に続く必要があります。これがすぐにファイルを使用するのが/etc/sudoers.d
効果的な理由です。このファイルが最後に含まれているためです。
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
に複数のファイルを追加する場合は、sudoers.d
番号付きファイル名規則(XX-somefile
)を使用すると、ファイルが確実にソートされ、規則の正しい優先順位を確保できます。
答え2
Ubuntu 16.04ベースのLinux Mint 18.2の1つの解決策は、visudo
以下を使用して別々のsudoersファイルを作成することです。
sudo visudo -f /etc/sudoers.d/teamviewer
追加行を追加します。
vlastimil ALL = (root) NOPASSWD: /usr/bin/teamviewer
入ってください。おそらく最もエレガントな解決策かもしれませんが、それは単にコメントの問題です。
答え3
これはバイナリファイルに定義された絶対パスですteamviewer
。
vlastimil
ユーザーとして次のことを試してください。
$ sudo /usr/bin/teamviewer