欢迎登陆真网站,您的到来是我们的荣幸。 登陆 注册 忘记密码? ☆设为首页 △加入收藏
欢迎加入真幸福QQ群
电脑知识: 基础知识 网络技术 操作系统 办公软件 电脑维修 电脑安全 windows7 windows8 windows10 服务器教程 平板电脑 视频播放教程 网络应用 互联网 工具软件 浏览器教程 QQ技巧 输入法教程 影视制作 YY教程 wps教程 word教程 Excel教程 PowerPoint
云南西双版纳特产小花糯玉米真空包装


Win10系统下关闭常用文件夹的方法
Chrome浏览器界面怎么缩放
centos下初识日志式文件系统(ext3)详解
CentOS启动和停止服务详解
CentOS文件查看及编辑介绍详解
谷歌浏览器内存占用过大怎么解决
CentOS6.6设置grub密码的方法
Win10未激活用户添加桌面图标的方法
win10系统怎么重启资源管理器
CentOS下nethogs命令详解
centos环境变量如何设置安全问题?
【 来源:网络 】【 点击:5 】 【 发布时间:2017_03_03 08:59:59 】

   .是代表当前目录。如果将这点写入root的环境变量,执行脚本时,你只需要打脚本的名字,系统就会在当前的目录下找该脚本并执行。

  例如,一个U盘插入电脑,你打了一个文件名字,系统就会执行U盘中的该文件,如果有木马程序,也会被执行,比如脚本中有rm -rf /* 这样的命令,你的系统就会被删除。

  设想一下,有一个人在一个他能写的目录下写了一个名为ls的可执行程序,程序会把/etc/shadow文件发送到某一邮箱,而root又恰巧在那个目录下,想ls下,结果是什么呢?

  所以,很多安全要求高的Unix系统甚至要求用绝对路径调用命令

  本文主要讲述“.”在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

本网站由川南居提供技术支持,fkzxf版权所有 浙ICP备12031891号
淳安分站 淳安分站