Chinaunix

标题: 【已解决】请教如何让环境变量能够通过sudo传递进去。 [打印本页]

作者: 蓝白725    时间: 2010-11-15 10:02
标题: 【已解决】请教如何让环境变量能够通过sudo传递进去。
本帖最后由 蓝白725 于 2010-11-16 09:31 编辑

RHEL5.3下,我用自己的用户名登录后,使用export命令定义了一个环境变量,然后在通过sudo的方式执行一个脚本的时候,该脚本提示找不到该环境变量,可是我通过sudo echo <env_name>的方式可以打印出该环境变量的值。

各位大侠帮帮忙,为什么sudo执行脚本就获取不到那个环境变量呢?
谢谢啦!

【解决方案】
在/etc/sudoers中修改:
Defaults    env_reset
为:
Defaults    !env_reset

这样,任何环境变量都可以通过sudo传进去了。
作者: Yuri.G.    时间: 2010-11-15 10:06
回复 1# 蓝白725


    那你就把变量写到那个脚本里面去好了,sudo肯定是不会带这个用户的变量过去的,因为两个用户不一样,除非你通过sudo的时候加export去携带。
作者: 蓝白725    时间: 2010-11-15 10:10
应该是可以通过配置/etc/sudoers的方式传进去,我以前试过,但是现在实在不记得当时是怎么弄的了。
作者: cst05001    时间: 2010-11-15 10:11
楼主尝试
  1. su - -c "命令集"
复制代码

作者: 蓝白725    时间: 2010-11-15 10:17
谢谢楼上的。不过不是很明白啊。。。
su - -c "命令集" 在哪儿使用呢?用作什么呢?
作者: Yuri.G.    时间: 2010-11-15 11:04
回复 5# 蓝白725


    su -c 跟sudo基本是一样的。
你可以把sudo后面的命令写成多个而已,用;分割
作者: 蓝白725    时间: 2010-11-15 11:09
谢谢。
不过我希望的是,能够不改我的脚本,通过修改系统配置的方式把环境变量传进去。
以前好像通过在/etc/sudoers中配置env_reset和env_keep的方式搞定过。。。
作者: Yuri.G.    时间: 2010-11-15 11:12
回复 7# 蓝白725


    那你直接写到/etc/profile里面不就得了
作者: 蓝白725    时间: 2010-11-15 16:25
搞定了!在/etc/sudoers中修改:
Defaults    env_reset
为:
Defaults    !env_reset

这样,任何环境变量都可以通过sudo传进去了。
作者: jy02107028    时间: 2010-11-15 18:17
验证成功,又学会了一个小技巧
作者: Yuri.G.    时间: 2010-11-15 18:25
回复 9# 蓝白725


    恭喜,为了论坛风气,建议把这楼整理到一楼去,然后改一下标题,加【已解决】
作者: zsgd    时间: 2010-11-15 20:14
回复 9# 蓝白725


    小样 ,也不share一下,还是被发现了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2