为什么不将用户目录添加到 PATH 中?

为什么不将用户目录添加到 PATH 中?

对于用户脚本,通常的建议是将其目录附加到$PATHin one's .profile

PATH="$PATH:$HOME/.myscripts" # or .bin or whatever

显然这比前置它更安全:PATH="$HOME/.myscripts:$PATH"

但以安全的方式进行意味着您的脚本将被同名的系统包击败。例如,如果您将脚本命名为mount或,则当您尝试使用它时会发生意外的情况。import

我知道很多人会将此视为一个功能,而不是一个错误。但就我个人而言,我希望能够将我的脚本命名为任何我喜欢的名称,包括import,并让它们毫无意外地运行。

据我了解,前置的风险是:

  • 恶意脚本可以ls在没有 root 访问权限的情况下重写等(但这在仅从标准发行版存储库安装软件时真的是一个问题吗?)
  • 系统包可能会调用您的用户脚本而不是其他系统包(但mount实际上,用户包是否曾经调用或没有完整路径的其他内容?似乎是一个坏主意)

.profile在单用户系统上添加 via 的安全隐患究竟有多严重?

答案1

我认为你在这里击中了要害:

当你尝试使用它时会发生意想不到的事情

如果您使用标准命令创建一个名为 squats 的可执行文件,那么您就是在自找麻烦。但这是您的计算机(我认为),因此最终您可以用它做您喜欢的事情,最佳实践或其他方式。

实现您正在寻找的内容的一种更安全的方法是以附加方式设置 PATH,为您的脚本指定一个“安全”名称(例如jortstek_mount),然后沿着这些行向您的 shell 配置文件添加别名或简单函数

mount() {
  command jortstek_mount "$@"
}

相关内容