ユーザーがttyなしでパスワードなしのSudoを実行できるようにする必要があります。
sudoers
ファイルを直接編集する必要がないため、/etc/sudoers.d/
の下に必要な特別なコマンドと設定を含むファイルがあります。そのファイルには、次のものが含まれています。
# My list of commands that the user can run passwordless
myUser ALL=(ALL) NOPASSWD:SETENV: /foo/bar /foo/zaz
# My new defaults.
Defaults exempt_group = myUser
Defaults !env_reset,env_delete-=PATH
Defaults: myUser !requiretty
ただし、ユーザーにsu
を実行してSudo -l
を実行すると、デフォルトで次のようになります。
Matching Defaults entries for myUseron this Host:
requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION
LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin, exempt_group=myUser,
!env_reset, env_delete-=PATH, !requiretty
私がそれを見ることができるところには、最初にrequiretty
があり、最後に私の!requiretty
がありますが、これは機能しません。これは、通常のsudoers
ファイルが最初に解析され、次に/etc/sudoers.d/
の下のカスタムファイルが解析されるため、これが発生していると思います。
元の/etc/sudoers
を編集せずにこの作業を行う方法はありますか?
デフォルトの文法は次のとおりです(man sudoersを参照):
Default_Type ::= 'Defaults' |
'Defaults' '@' Host_List |
'Defaults' ':' User_List |
'Defaults' '!' Cmnd_List |
'Defaults' '>' Runas_List
User_List ::= User |
User ',' User_List
だからオンライン
Defaults: myUser !requiretty
Defaults:
とmyUser
の間のスペースを削除します。