[问题]sudo path会被reset
-
- 帖子: 9
- 注册时间: 2007-10-21 23:19
[问题]sudo path会被reset
大概的情况和这个blog上的比较相似:http://www.cnweblog.com/skean/articles/273205.html
就是自己设的path,用 sudo 的时候就是被reset了,请问有人遇到过吗???
就是自己设的path,用 sudo 的时候就是被reset了,请问有人遇到过吗???
- bones7456
- 帖子: 8495
- 注册时间: 2006-04-12 20:05
- 来自: 杭州
- 联系:
-
- 帖子: 9
- 注册时间: 2007-10-21 23:19
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
找到了
man sudo
cat /usr/share/doc/sudo/OPTIONS
所以无论如何PATH都会设成一个安全值
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
...
代码: 全选
...
--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.
...
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
-
- 帖子: 9
- 注册时间: 2007-10-21 23:19
对,就是楼上的这种原因。
有什么办法可以修改这个安全值吗?
我的PATH是这样的:
有什么办法可以修改这个安全值吗?
我的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
- bones7456
- 帖子: 8495
- 注册时间: 2006-04-12 20:05
- 来自: 杭州
- 联系:
很正常啊, su 本来就不会改变环境变量,你试试 sudo su - (注意后面有个短横杆),再执行 xxx 试试...BigSnake.NET 写了:你那个PATH是什么绿茵汗将 写了:不是了,我已经设过root的path和我自己的path,都设过了,但是出现了三种情况
user@server:~$ xxx(OK)
-----------------------------
user@server:~$ sudo su
root@server:/home/user$ xxx(OK)
-----------------------------
user@server:~$ sudo xxx(无法执行)
关注我的blog: ε==3
-
- 帖子: 9
- 注册时间: 2008-05-22 16:16
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
第三个不知你怎么实现的绿茵汗将 写了:对,就是楼上的这种原因。
有什么办法可以修改这个安全值吗?
我的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
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
-
- 帖子: 9
- 注册时间: 2008-05-22 16:16
BigSnake.NET
sudo env |grep'PATH'
和
sudo su -
env |grep'PATH'
的PATH一样,没有‘包含/usr/local/texlive/2007/bin/i386-linux’
代码: 全选
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 su -
env |grep'PATH'
的PATH一样,没有‘包含/usr/local/texlive/2007/bin/i386-linux’
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
实际上就应该是这样的, PATH 在sudo时就reset了, 如果 su - 的话可能受 root 的 profile 影响, 因为相当于 logintinyhoney 写了:BigSnake.NET
sudo env |grep'PATH'代码: 全选
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 su -
env |grep'PATH'
的PATH一样,没有‘包含/usr/local/texlive/2007/bin/i386-linux’
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
-
- 帖子: 9
- 注册时间: 2008-05-22 16:16
BigSnake.NET
有什么方法可以避免PATH被reset吗?
'sudo -s' 是可以让$HOME不变,仍然指向user的HOME。但是PATH仍然被reset了。
咋办呢?
想到一个法子,就是重新输出变量PATH,就是:
有什么方法可以避免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:~#
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
不可能, 硬编码在sudo里的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:~#
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。