服务器是ubuntu12.04
用一个账户app,使用su - app得到的环境变量和直接ssh登录的环境变量不同。
导致su - app,无法执行ifconfig
su - app
的环境变量
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
ssh直接登录的环境变量:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
不同地方已经标出。
问题出现在su执行的过程中,应该使用了/etc/login.defs文件,经过验证。
ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/fuck
ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/aka
su - 到普通用户,使用ENV_SUPATH
su - root 使用ENV_PATH,这个我已经在机器上测试过了。
但是su 『user』则都会生成路径:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
sudo大概用到的PATH是在/etc/sudoers中设定的
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
但我没有找到相关资料。
=====================================================================================
与之相关的还有login shell , non login shell , interactive shell, non interactive shell
http://smilejay.com/2012/10/interactive-shell-login-shell/