Solaris系统 sudo 执行脚本是无法传递环境变量
2010-06-28 21:57
295 查看
问题:
用sudo执行脚本,如
sudo $PATH/restoreFolder.sh
在restoreFolder.sh脚本中有一些环境变量,就为空值,或者没有这个变量了!
执行sudo这个命令的Shell无法将环境变量传递到restoreFolder.sh的执行环境中去。
解决方法:
(1)手动在脚本中设置所需的变量(那这样的话,这个“变量就不是变量”),或者在执行sudo前把所需要的变量写到restoreFolder.sh脚本中去。
(2)
sudo的环境变量的传递是由/etc/sudoers控制的,要传递什么环境变量,在该文件中加上如下语句即可,例如
Defaults envNeedKeeping += "Value"
(3)运行:visudo 命令或者打开 /usr/local/etc/sudoers
sudo 默认将原有的环境变量 reset,只保留一些对安全没有影响设定。
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR /
LS_COLORS MAIL PS1 PS2 QTDIR USERNAME /
LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION /
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC /
LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS /
_XKB_CHARSET XAUTHORITY"
但是在用于开发的机器上,有时候这个安全设定不是那么方便,可以通过 visudo 修改配置为保留原有的环境变量
Defaults !env_reset
#Defaults env_reset
#Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR /
# LS_COLORS MAIL PS1 PS2 QTDIR USERNAME /
# LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION /
# LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC /
# LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS /
# _XKB_CHARSET XAUTHORITY"
---------------------------------------------------------------------------------
用sudo执行脚本,如
sudo $PATH/restoreFolder.sh
在restoreFolder.sh脚本中有一些环境变量,就为空值,或者没有这个变量了!
执行sudo这个命令的Shell无法将环境变量传递到restoreFolder.sh的执行环境中去。
解决方法:
(1)手动在脚本中设置所需的变量(那这样的话,这个“变量就不是变量”),或者在执行sudo前把所需要的变量写到restoreFolder.sh脚本中去。
(2)
sudo的环境变量的传递是由/etc/sudoers控制的,要传递什么环境变量,在该文件中加上如下语句即可,例如
Defaults envNeedKeeping += "Value"
(3)运行:visudo 命令或者打开 /usr/local/etc/sudoers
sudo 默认将原有的环境变量 reset,只保留一些对安全没有影响设定。
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR /
LS_COLORS MAIL PS1 PS2 QTDIR USERNAME /
LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION /
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC /
LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS /
_XKB_CHARSET XAUTHORITY"
但是在用于开发的机器上,有时候这个安全设定不是那么方便,可以通过 visudo 修改配置为保留原有的环境变量
Defaults !env_reset
#Defaults env_reset
#Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR /
# LS_COLORS MAIL PS1 PS2 QTDIR USERNAME /
# LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION /
# LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC /
# LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS /
# _XKB_CHARSET XAUTHORITY"
---------------------------------------------------------------------------------
相关文章推荐
- sudo执行脚本找不到环境变量
- sudo执行脚本找不到环境变量和命令
- sudo执行脚本找不到环境变量解决方法
- sudo执行脚本找不到环境变量
- Crontab任务执行脚本source无法获取环境变量
- linux设置Hadoop执行脚本到环境变量
- crontab执行python脚本,没有读取root的环境变量
- jenkins给ant脚本传递环境变量
- sudo 临时切换用户和环境变量的传递
- 我的python学习之路----传递命令行参数给脚本及获取环境变量
- crontab 中 python(cx_Oracle)脚本执行时需要用户环境变量,怎么办??
- jenkins执行shell脚本,找不到环境变量
- LInux sudo执行赋予环境变量
- Linux可执行文件的启动及命令行参数和环境变量的传递
- ssh连接远程主机执行脚本的环境变量问题
- 无法在环境变量中找到make命令: make 构建项目HelloWorld 时发生错误 (目标: 桌面) 当执行构建步骤 'Make'时
- ssh连接远程主机执行脚本的环境变量问题
- 在crontab中执行python脚本系统环境变量问题
- [ 转载 ] ssh连接远程主机执行脚本的环境变量问题
- 如何让环境变量能够通过sudo传递进去。