当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 23 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : [问题]sudo path会被reset
帖子发表于 : 2008-04-15 17:28 

注册: 2007-10-21 23:19
帖子: 9
送出感谢: 0 次
接收感谢: 0 次
大概的情况和这个blog上的比较相似:http://www.cnweblog.com/skean/articles/273205.html

就是自己设的path,用 sudo 的时候就是被reset了,请问有人遇到过吗??? :cry:


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-04-15 17:35 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
sudo是以root身份启动的,当然不会理会当前用户的PATH,不然不是乱了?


_________________
关注我的blog: ε==3


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-04-15 17:48 

注册: 2007-10-21 23:19
帖子: 9
送出感谢: 0 次
接收感谢: 0 次
不是了,我已经设过root的path和我自己的path,都设过了,但是出现了三种情况

引用:
user@server:~$ xxx(OK)
-----------------------------
user@server:~$ sudo su
root@server:/home/user$ xxx(OK)
-----------------------------
user@server:~$ sudo xxx(无法执行)


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-04-15 18:31 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
绿茵汗将 写道:
不是了,我已经设过root的path和我自己的path,都设过了,但是出现了三种情况

引用:
user@server:~$ xxx(OK)
-----------------------------
user@server:~$ sudo su
root@server:/home/user$ xxx(OK)
-----------------------------
user@server:~$ sudo xxx(无法执行)


你那个PATH是什么


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-04-15 18:37 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
找到了
man sudo
代码:
...
ENVIRONMENT
       sudo utilizes the following environment variables:

        EDITOR                 Default editor to use in -e (sudoedit) mode if
                               VISUAL is not set

        HOME                   In -s or -H mode (or if sudo was configured with
                               the --enable-shell-sets-home option), set to
                               homedir of the target user

        PATH                   Set to a sane value if sudo was configured with
                               the --with-secure-path option (true for Debian)

        SHELL                  Used to determine shell to run with -s option
...

cat /usr/share/doc/sudo/OPTIONS
代码:
...
  --with-secure-path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:\
        /sbin:/bin:/usr/X11R6/bin" 

        Give a reasonable default path for commands run as root via sudo.
...


所以无论如何PATH都会设成一个安全值


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-04-15 20:45 

注册: 2007-10-21 23:19
帖子: 9
送出感谢: 0 次
接收感谢: 0 次
对,就是楼上的这种原因。

有什么办法可以修改这个安全值吗?

我的PATH是这样的:
引用:
user@server:~$ env | grep "^PATH"
PATH=/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

user@server:~$ sudo env | grep "^PATH"
[sudo] password for user:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

user@server:~$ sudo su
root@server:/home/user$ env | grep "^PATH"
PATH=/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games



页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-04-16 8:47 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
BigSnake.NET 写道:
绿茵汗将 写道:
不是了,我已经设过root的path和我自己的path,都设过了,但是出现了三种情况

引用:
user@server:~$ xxx(OK)
-----------------------------
user@server:~$ sudo su
root@server:/home/user$ xxx(OK)
-----------------------------
user@server:~$ sudo xxx(无法执行)


你那个PATH是什么


很正常啊, su 本来就不会改变环境变量,你试试 sudo su - (注意后面有个短横杆),再执行 xxx 试试...


_________________
关注我的blog: ε==3


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2008-05-22 17:11 

注册: 2008-05-22 16:16
帖子: 9
送出感谢: 0 次
接收感谢: 0 次
我也碰到相同的问题了。

按照上面的说法:
------
sudo su -
xxx
-----
xxx命令不能运行。

不知解决的方法是咋样的。

着急啊。


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2008-05-22 17:29 

注册: 2008-05-22 16:16
帖子: 9
送出感谢: 0 次
接收感谢: 0 次
绿茵汗将
我碰到相似问题了。不知道你是怎么解决的。

谢谢。


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2008-05-22 18:19 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
绿茵汗将 写道:
对,就是楼上的这种原因。

有什么办法可以修改这个安全值吗?

我的PATH是这样的:
引用:
user@server:~$ env | grep "^PATH"
PATH=/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

user@server:~$ sudo env | grep "^PATH"
[sudo] password for user:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

user@server:~$ sudo su
root@server:/home/user$ env | grep "^PATH"
PATH=/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games



第三个不知你怎么实现的

代码:
autumncat@autumncat-host:~
$ env | grep "^PATH"
PATH=/home/autumncat/bin:/home/autumncat/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Exit status: 0
autumncat@autumncat-host:~
$ sudo su
root@autumncat-host:/home/autumncat# env | grep "^PATH"
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
root@autumncat-host:/home/autumncat# exit
Exit status: 0
autumncat@autumncat-host:~
$ sudo su -
root@autumncat-host:~# env | grep "^PATH"
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2008-05-22 19:32 

注册: 2008-05-22 16:16
帖子: 9
送出感谢: 0 次
接收感谢: 0 次
BigSnake.NET

代码:
hero@ubuntu:~$ env | grep 'PATH'
PATH=/usr/local/texlive/2007/bin/i386-linux:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
hero@ubuntu:~$ su
root@ubuntu:/home/hero# env | grep 'PATH'
PATH=/usr/local/texlive/2007/bin/i386-linux:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
hero@ubuntu:~$ sudo env|grep 'PATH'
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
hero@ubuntu:~$ sudo su -
root@ubuntu:~# env | grep 'PATH'
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
root@ubuntu:~#   


sudo env |grep'PATH'

sudo su -
env |grep'PATH'
的PATH一样,没有‘包含/usr/local/texlive/2007/bin/i386-linux’


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2008-05-22 19:38 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
tinyhoney 写道:
BigSnake.NET

代码:
hero@ubuntu:~$ env | grep 'PATH'
PATH=/usr/local/texlive/2007/bin/i386-linux:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
hero@ubuntu:~$ su
root@ubuntu:/home/hero# env | grep 'PATH'
PATH=/usr/local/texlive/2007/bin/i386-linux:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
hero@ubuntu:~$ sudo env|grep 'PATH'
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
hero@ubuntu:~$ sudo su -
root@ubuntu:~# env | grep 'PATH'
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
root@ubuntu:~#   


sudo env |grep'PATH'

sudo su -
env |grep'PATH'
的PATH一样,没有‘包含/usr/local/texlive/2007/bin/i386-linux’


实际上就应该是这样的, PATH 在sudo时就reset了, 如果 su - 的话可能受 root 的 profile 影响, 因为相当于 login


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2008-05-22 19:56 

注册: 2008-05-22 16:16
帖子: 9
送出感谢: 0 次
接收感谢: 0 次
BigSnake.NET

有什么方法可以避免PATH被reset吗?

'sudo -s' 是可以让$HOME不变,仍然指向user的HOME。但是PATH仍然被reset了。

咋办呢?

想到一个法子,就是重新输出变量PATH,就是:
代码:
hero@ubuntu:~$ sudo -s
root@ubuntu:~# export PATH=PATH=/usr/local/texlive/2007/bin/i386-linux:$PATH
root@ubuntu:~# echo $PATH
PATH=/usr/local/texlive/2007/bin/i386-linux:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
root@ubuntu:~# echo $HOME
/home/hero
root@ubuntu:~#


页首
 用户资料  
 
14 楼 
 文章标题 :
帖子发表于 : 2008-05-22 20:00 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
tinyhoney 写道:
BigSnake.NET

有什么方法可以避免PATH被reset吗?

'sudo -s' 是可以让$HOME不变,仍然指向user的HOME。但是PATH仍然被reset了。

咋办呢?

想到一个法子,就是重新输出变量PATH,就是:
代码:
hero@ubuntu:~$ sudo -s
root@ubuntu:~# export PATH=PATH=/usr/local/texlive/2007/bin/i386-linux:$PATH
root@ubuntu:~# echo $PATH
PATH=/usr/local/texlive/2007/bin/i386-linux:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
root@ubuntu:~# echo $HOME
/home/hero
root@ubuntu:~#

不可能, 硬编码在sudo里的


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
15 楼 
 文章标题 :
帖子发表于 : 2008-05-22 20:01 

注册: 2008-05-22 16:16
帖子: 9
送出感谢: 0 次
接收感谢: 0 次
成功了。
其实早该这么作了,浪费了一天的时间。

多谢。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 23 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译