运行Anaconda脚本sudo报错:sudo: no tty present and no askpass program specified
解决sudo执行Anaconda时出现
sudo: no tty present and no askpass program specified的问题 嘿,我来帮你拆解这个报错的核心原因,其实是两个关键问题叠加导致的:
1. sudoers规则顺序错误,NOPASSWD规则根本没生效
sudoers的规则是从上到下匹配,第一个符合条件的规则就会被执行。你当前的sudoers配置里,先写了这条:
my_user ALL=(ALL) ALL
这条规则要求你执行任何sudo命令都必须输入密码,而后面的NOPASSWD规则因为前面已经匹配到了要求密码的规则,直接被忽略,完全不会生效。
2. 命令路径不匹配,NOPASSWD规则就算生效也没用
你实际执行的命令是:
sudo /Users/me/anaconda3/bin/python myScript.py
但你在sudoers里写的NOPASSWD规则路径是/Users/orenkobo/anaconda3/bin/python——路径里的用户名是orenkobo,和你实际使用的me不匹配,这条规则根本匹配不上你的命令,等于白配置了。
快速解决步骤
必须用
visudo命令编辑sudoers(这个命令会自动检查语法错误,避免你因写错规则把自己锁在系统外),打开后调整规则顺序,把NOPASSWD规则放在最前面:# User privilege specification root ALL=(ALL) ALL # 如果你想让所有sudo命令都免密,用这条 my_user ALL=(ALL) NOPASSWD: ALL my_user ALL=(ALL) ALL %admin ALL=(ALL) ALL(如果只想让Anaconda的Python免密,就把
my_user ALL=(ALL) NOPASSWD: /Users/me/anaconda3/bin/python放在my_user ALL=(ALL) ALL前面,务必保证路径和你实际的完全一致)保存退出后,再执行你的命令试试,报错应该就消失了。
内容的提问来源于stack exchange,提问作者Cranjis
相关产品推荐
相关产品推荐

