为什么sudo 会更改路径?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (10)
  • 关注 (0)
  • 查看 (82)

以下为没有sudo的路径变量:

$ echo 'echo $PATH' | sh

/opt/local/ruby/bin:/usr/bin:/bin

这是带有sudo的路径变量:

$ echo 'echo $PATH' | sudo sh

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

据我所知,sudo对路径不应该产生任何影响,那么我应该如何消除这种影响?(版本为Ubuntu 8.04)

更新:据我所知,没有一个脚本以任何方式作为根更改路径

man sudo:

为了防止命令错误,sudo在搜索用户PATH中的命令(如果其中一个或两者都在PATH中)时会检查最后一个“.”和“”(都表示当前目录)。但是请注意,实际的PATH环境变量没有被修改,并且不变地传递给sudo执行的程序。

提问于
用户回答回答于

Debian bug#85123(“sudo:SECURE_PATH still can't be overridden“)(从2001年开始!)

似乎Bug#20996仍然存在于这个版本的sudo中。并且它可以在运行时被重写,但我还没有发现它是如何被覆盖的。

可以在你的suder文件中这样写:

Defaults secure_path="/bin:/usr/bin:/usr/local/bin"

但是当我在Ubuntu 8.10中这样做的时候,返回了一个error:

visudo: unknown defaults entry `secure_path' referenced near line 10

Ubuntubug#50797(“使用安全路径构建的sudo是有问题的”)

据我所知,要在sudoers文件中指定secure_path是不可能的。比如,如果你想让你的用户能够很容易地使用/opt,你必须重新编译sudo。

并且需要有一种方法来重写此“特性”,而不必重新编译。

出于安全考虑,保持当前的行为是明智的,但是除了从源代码重新编译之外,还可以一种方法来重写它。

以下为我的解决方案: MV/usr/bin/sudo/usr/bin/sudo.orig 然后创建一个文件/usr/bin/sudo,其中包含以下内容: #/bin/bash/usr/bin/sudo.orig env path=$path“$@” 那么你的常规sudo就像非安全路径sudo一样工作

Ubuntubug#192651(“sudo路径总是重置”)

鉴于这个bug的副本最初是在2006年7月提交的,我不清楚无效的env_keep已经运行了多长时间。并且sudo和sudoers的手册页应该反映修改PATH的选项是多余的。

修改文档以反映实际执行情况并不是不稳定的,而且还非常有用。

Ubuntubug#226595(“无法保留/指定路径”)

我需要能够运行SUDO与更多的非STD二进制文件夹的路径。我已经将我的需求添加到/etc/环境中,当我在sudo下运行命令时,遇到了关于命令缺少的error, 我尝试了以下方法来解决这个问题,但没有成功:

  1. 使用“sudo -E“选项,并且我的现有路径仍然被sudo重置
  2. 将“Defaults env_reset“改为”Defaults !env_reset
  3. 在/ etc / sudoers中取消注释env_reset(例如“#Defaults env_reset”)
  4. 将‘Defaults env_keep += "PATH"添加到 /etc/sudoers中。

尽管有man文档,但是sudo对于路径是完全硬编码的,并且不允许在保留用户路径方面有任何灵活性。而且我不能在root权限下使用sudo运行非默认的软件。

热门问答

腾讯云广州一区DNS变更,需要怎么操作?

思潮澎湃轻描淡写的生活,但思潮澎湃
推荐
我也收到相关的通知了,这里分享下~ 2019年1月31日,腾讯云将对广州地区旧的基础网络DNS服务器(10.225.30.181、10.225.30.223)进行下线。在此期间,腾讯云提供最新的DNS服务器供您更新使用。 我们建议您尽快将DNS服务器配置进行更新,并且我们为您提供...... 展开详请

快照容量与费用的比例?如何关闭停用?

帅的惊动我国计算机大神
推荐已采纳
快照已于2019年1月22日0时启动正式商业化进程,商业化后所有存量快照和新产生的快照将根据快照使用的存储容量进行收费。 在快照商业化后,腾讯云仍旧会在国内主要地域为用户提供一定量的免费额度。免费额度策略如下: 免费额度覆盖范围为中国大陆地域,中国香港及海外地域暂无免费快照额...... 展开详请

云服务器购买后多久生效能使用?

Eli Qiao

腾讯 · 高级工程师 (已认证)

腾讯云CVM后台高级研发工程师
推荐

如果使用公有镜像,一般 10s 左右后台就可以创建完成。

欠费资源销毁怎么解决?

西风

renzha.net · 站长 (已认证)

www.renzha.net
推荐
当您的账户发生欠费时,对象存储 COS 会在24小时后停止服务,您的数据可以继续保留120天,如果在此期间未进行续费使账户余额大于等于0, 您的数据将会被销毁。 注意: 欠费停服后,数据占用的存储容量会持续计费,直到销毁数据。 销毁数据后,不可恢复。 用户续费使账户余额大于等于...... 展开详请

React项目的try_files机制,在COS上怎么配置?

galenye

腾讯 · 工程师 (已认证)

对象存储专业搬砖工
推荐
COS的静态网站可以设置默认索引,你这里应该是想实现react-router spa场景下刷新浏览器时,不希望报404的场景吧 可以在COS静态网站这设置一个错误文档的默认索引来实现类似try_files的功能 image.png ... 展开详请

用户主动向云服务器的号码发送短信(不是回复),该条消息能否回调给业务服务器?

推荐

您好,主动上行需配置专属上行码号,月发送量大于300万条可申请配置。未配置专属上行码号用户可先下发短信后用户回复。感谢您对腾讯云短信的支持。

所属标签

扫码关注云+社区