在 Solaris 10 中修改默认 PATH 环境变量

在 Solaris 10 中修改默认 PATH 环境变量

我知道我可以修改 /etc/profile。但是有更好的方法吗?我知道 /etc/profile 会影响终端,但我希望所有进程都受到影响。crontab、服务管理器、启动脚本等。

编辑:我有一个答案来编辑 cron 的 PATH,但仍然想要一个用于服务管理调用的启动脚本和可执行文件的答案。

答案1

您必须考虑上述某些应用程序的运行环境。运行这些带有意外 PATH 的命令存在安全隐患。有权访问 PATH 早期目录的恶意用户可能能够替换自己的命令并获得访问权限等。

启动脚本通常使用要运行的命令的完整路径(有些可能会设置受限的 PATH)——这确保执行预期的命令。

调用服务时,SCM 不使用 PATHS,而是使用清单 ( /var/svc/manifest/...)。清单是 xml 文件,包含定义如何与给定服务交互所需的所有信息。同样,命令的完整路径用于确保执行预期的命令。

您可以在 中设置默认值PATH(普通用户)或SUPATH(对于 root 用户)/etc/default/cron。同样,您应该考虑这样做的安全隐患 - 最好使用命令的完整路径,并让命令在需要时定义自己的 PATH。

我相信 init 传递给 SMF 和 init 脚本的默认 PATH 被编译到在里面二进制,无法更改。明确不从 /etc/default/init 读取。

答案2

我同意@lain的观点,你确实应该只使用所需命令的完整路径。也就是说,大多数 smf 方法都来自/lib/svc/share/smf_include.sh。你可以在那里更改 PATH 变量,但我认为这通常不是一个好主意。

相关内容