Eug*_*iti 5 sudo environment-variables
有没有一种方法(无需跳过太多的障碍)以完全保留环境的sudo -uuser command方式运行?user
基本上,我需要的是确保为所有允许运行 sudo 的用户设置特定的环境变量以模拟某些 ID - 主要是PATH、JAVA_HOME和数据库相关的(Oracle 和 Postgres)变量。
换句话说 - 当我作为用户wobble运行时,sudo -u wibble echo $PATH我希望看到wibble显示的路径而不是 的wobble路径。
您当然可以对所有用户或给定用户进行以下操作,但它适用于所有命令sudo -u anyuser。编辑/etc/sudoers文件并添加一行,例如
Defaults env_keep+="PATH JAVA_HOME"
Run Code Online (Sandbox Code Playgroud)
对于所有用户,或者
Defaults:wobble env_keep+="PATH JAVA_HOME"
Run Code Online (Sandbox Code Playgroud)
只是摇摆,以及您想要保留的所有变量。实际上,PATH通常是一种特殊情况,并且会被重置,因此您可能需要使用类似的条目来取消它
Defaults:wobble !secure_path, env_keep+="PATH JAVA_HOME"
Run Code Online (Sandbox Code Playgroud)
显然,这些功能的存在是有充分理由的,所以要小心。
还可以sudo -E通过 sudoers 条目来保护环境,例如:
wobble ALL = (wibble) SETENV: ALL
Run Code Online (Sandbox Code Playgroud)
但这仍然会重置特殊情况的 PATH,尽管您可以运行类似的命令
sudo -E PATH=$PATH -u wibble ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3304 次 |
| 最近记录: |