首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以sudo的形式运行程序不起作用

以sudo的形式运行程序不起作用
EN

Ask Ubuntu用户
提问于 2018-12-28 16:39:44
回答 2查看 12.6K关注 0票数 5

使用sudo在Ubuntu18.04中安装工具和其他使用命令行的工具可以很好地工作。示例:sudo apt install ...工作得非常完美。通过命令行运行工具和程序,因为sudo根本不起作用。运行与普通用户相同的程序和工具是完美的。示例:start gtkwave作为普通用户使gtkwave弹出。启动gtkwave作为sudo,询问密码,然后以:sudo: gtkwave: command not found结尾。

我必须说,在命令行中调用的一些工具作为sudo工作得非常完美,例如,我可以以普通用户和sudo的身份从命令行启动Atom。

这可能是因为没有以sudo的形式运行的工具/程序不是安装在像/bin/usr/bin这样的普通Linux文件夹中,而是安装在/opt下的程序中(这些工具/程序是添加到路径中并具有必要的环境设置)吗?

有人知道为什么会这样吗?

EN

回答 2

Ask Ubuntu用户

发布于 2018-12-28 22:48:35

默认情况下,sudo使用自己在/etc/sudoers文件中定义的secure_path搜索程序。来自man sudoers

用于从sudo运行的每个命令的secure_path路径。如果您不信任运行sudo的人有一个正常的路径环境变量,您可能想使用这个。另一个用途是,如果您希望将“根路径”与“用户路径”分开。exempt_group选项指定的组中的用户不受secure_path的影响。默认情况下不设置此选项。

请注意,尽管有最后一行,默认的Ubuntu /etc/sudoers确实设置了它:

代码语言:javascript
复制
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

因此,调用用户的PATH和根用户的PATH都不会影响程序在使用sudo时是否被定位。

如果您真的希望/opt等位置的程序可以通过sudo执行,则需要

  • 使用完整的路径,例如sudo /opt/somepath/bin/prog
  • 修改sudoers secure_path以包括位置--如果您决定这样做,请使用sudo visudo捕获任何语法错误(否则您可能会将自己完全锁在sudo之外)。

但是,在继续之前,您可能应该阅读为什么用户不应该使用普通的sudo来启动图形应用程序?

票数 6
EN

Ask Ubuntu用户

发布于 2022-07-24 10:52:29

而不是跑

sudo myCommand

你要么可以

sudo /full/path/to/myCommand

sudo "$(which myCommand)"

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1105164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档