我扔出砖。。。。(一个终端下的在线辞典)
时间:2008-04-15
来源:互联网
就是自己设的path,用 sudo 的时候就是被reset了,请问有人遇到过吗???
作者: 绿茵汗将 发布时间: 2008-04-15
作者: bones7456 发布时间: 2008-04-15
-----------------------------
user@server:~$ sudo su
root@server:/home/user$ xxx(OK)
-----------------------------
user@server:~$ sudo xxx(无法执行)
作者: 绿茵汗将 发布时间: 2008-04-15
-----------------------------
user@server:~$ sudo su
root@server:/home/user$ xxx(OK)
-----------------------------
user@server:~$ sudo xxx(无法执行)
你那个PATH是什么
作者: BigSnake.NET 发布时间: 2008-04-15
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都会设成一个安全值
作者: BigSnake.NET 发布时间: 2008-04-15
有什么办法可以修改这个安全值吗?
我的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
作者: 绿茵汗将 发布时间: 2008-04-15
-----------------------------
user@server:~$ sudo su
root@server:/home/user$ xxx(OK)
-----------------------------
user@server:~$ sudo xxx(无法执行)
你那个PATH是什么
很正常啊, su 本来就不会改变环境变量,你试试 sudo su - (注意后面有个短横杆),再执行 xxx 试试...
作者: bones7456 发布时间: 2008-04-16
按照上面的说法:
------
sudo su -
xxx
-----
xxx命令不能运行。
不知解决的方法是咋样的。
着急啊。
作者: tinyhoney 发布时间: 2008-05-22
我碰到相似问题了。不知道你是怎么解决的。
谢谢。
作者: tinyhoney 发布时间: 2008-05-22
有什么办法可以修改这个安全值吗?
我的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
第三个不知你怎么实现的
$ 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
作者: BigSnake.NET 发布时间: 2008-05-22
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’
作者: tinyhoney 发布时间: 2008-05-22
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
作者: BigSnake.NET 发布时间: 2008-05-22
有什么方法可以避免PATH被reset吗?
'sudo -s' 是可以让$HOME不变,仍然指向user的HOME。但是PATH仍然被reset了。
咋办呢?
想到一个法子,就是重新输出变量PATH,就是:
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:~#
作者: tinyhoney 发布时间: 2008-05-22
有什么方法可以避免PATH被reset吗?
'sudo -s' 是可以让$HOME不变,仍然指向user的HOME。但是PATH仍然被reset了。
咋办呢?
想到一个法子,就是重新输出变量PATH,就是:
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里的
作者: BigSnake.NET 发布时间: 2008-05-22
其实早该这么作了,浪费了一天的时间。
多谢。
作者: tinyhoney 发布时间: 2008-05-22
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28