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的邮箱里,再进行比较等任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303784.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用VirtualWifi软件实现无线网卡同时连接多个AP。

2019独角兽企业重金招聘Python工程师标准>>> 用VirtualWifi软件实现无线网卡同时连接多个AP。 随着信息技术的发展&#xff0c;越来越多的人开始使用便捷的无线路由器&#xff08;AP&#xff09;组建家庭局域网。当你发现你周围有多个AP可以连接的时候&#xff0c;是…

职场感悟

1&#xff0c;尽量避免到有香港人和新加坡人做上司的外企&#xff0c;不是偏见&#xff0c;是很多事实的经验&#xff0c;不信你可以自己去尝试下&#xff0c;不过不要怪我没提醒过你。 2&#xff0c;不要去有第三方人事代理的外企&#xff0c;比如某人事会告诉你&#xff0c;你…

C语言 time函数 开销,C语言: 函数调用的开销

初学C语言的时候&#xff0c;我们有时会听说函数调用会有一定的开销&#xff0c;在进行了进一步学习之后&#xff0c;我们来看看原来听说的开销指的什么。下面是两个非常简单的样例&#xff0c;就不作解释了&#xff1a;函数调用版本C程序&#xff1a;#include int sum(int a, …

机器学习萌新必学的Top10算法

导读&#xff1a;在机器学习领域里&#xff0c;不存在一种万能的算法可以完美解决所有问题&#xff0c;尤其是像预测建模的监督学习里。所以&#xff0c;针对你要解决的问题&#xff0c;最好是尝试多种不同的算法。并借一个测试集来评估不同算法之间的表现&#xff0c;最后选出…

NET问答: C# 中有哪些 HttpPost 工具包

咨询区 Hooch&#xff1a;我会用 GET Request&#xff0c;但如何使用 Post Request 还得请教大家。回答区 Evan Mulawski&#xff1a;有多种方式可以使用 Http 的 GET 和 Post 请求。A方法&#xff1a;HttpClient (推荐)HttpClient 可用于 .NET Framework 4.5, .NET Standard 1…

wordpress安装 相关

64 位ubuntu 安装 32位兼容包apt-get install ia32-libs刚看了一下&#xff0c;wordpress才11个表太神奇了&#xff0c;这么复杂的系统&#xff0c;amazing参考以下文章http://9hills.us/2011/01/wordpress/http://dueam.org/2010/09/ubuntu-server-%E5%AE%89%E8%A3%85%E4%B8%8…

分支结构程序案例c语言,C语言学习之三——分支结构程序

运算符优先级&#xff1a;如下所示&#xff1a;image.png关系运算符和表达式关系运算符定义&#xff1a;在程序中经常需要比较两个量的大小关系,以决定程序下一步的工作。因此使用关系运算符进行比较(注&#xff1a;比较后的返回值为boolean值&#xff0c;即0或1(真为1&#xf…

老刘在微软Ignite China大会上聊低代码

观点概要1.低代码平台不是新概念&#xff0c;这种概念的上一个类似的提法是“所见即所得”。目前的低代码平台是依靠技术手段&#xff0c;不仅让所见即所得&#xff0c;还可以让一部分“所不见也所得”&#xff0c;比如背后的数据结构&#xff0c;业务逻辑&#xff0c;权限认证…

诺基亚首款Windows Phone智能手机将在年内推出

诺基亚高级官员星期日称&#xff0c;第一款采用微软Windows Phone操作系统的诺基亚智能手机的目标发布日期将在几天之内确定下来。诺基亚的目标是在将这种手机推向市场。诺基亚负责智能设备的执行副总裁乔哈洛&#xff08;Jo Harlow&#xff09;称&#xff0c;诺基亚和微软的技…

c语言四个数找大wxyz,2015年计算机二级《C语言》考试上机测试题(7)

31.有以下程序&#xff1a;#includemain(  ){char a[20]&#xff0c;b[20]&#xff0c;c[20];scanf("%s%s"&#xff0c;a&#xff0c;b);gets(c);printf("%S%S%s\n"&#xff0c;a&#xff0c;b&#xff0c;c);}程序运行时从第一列开始输入&#xff1a;Th…

IOT必备之MQTT结构分析,不进来看看?【后附源码】

全网唯一物联网MQTT协议报文结构分析以及基于C#代码的报文组装实现介绍MQTT是一种基于TCP/IP协议的应用层协议&#xff0c;它规定了不同应用之间进行数据交换时的传送格式。既然是协议&#xff0c;理论上可以被任何开发语言实现它&#xff0c;以运行在任何平台&#xff0c;这个…

要成为年薪五十万的数据分析师,除了技术还需要什么?

超过59%企业&#xff0c;将提高数据分析岗位数量----一流的数据分析师&#xff0c;年薪轻松突破50万想必同学们看到这个数据并不惊讶&#xff0c;如今在中国&#xff0c;各行各业对数据分析岗位的需求日益提高&#xff1a;在线社交媒体&#xff0c;希望通过数据时刻洞察用户关注…

ISAPI_Rewrite伪静态配置

第一:首先我们需要下载一个ISAPI_Rewrite,有精简版和完全版,一般精简版只能对服务器全局进行配置,而完整版可以对服务器上的各个网站进行伪静态配置.对于个人站长来说,精简版就足够了. 下载&#xff1a;http://www.isapirewrite.com/download/isapi_rwl_0055.msi 第二:下载完…

c语言电脑蓝屏代码,电脑蓝屏代码0x0000001a的解决方法

遇到蓝屏&#xff0c;第一时间记录停机码&#xff0c;如有导致蓝屏的文件名&#xff0c;那么排查的范围就会缩小。下面小编就为大家介绍电脑蓝屏代码0x0000001a的解决方法介绍&#xff0c;希望能对大家有所帮助&#xff01;方法/步骤1、先看这张截图的停机码所在位置。STOP后面…

关于序列建模,是时候抛弃RNN和LSTM了

作者表示&#xff1a;我们已经陷入 RNN、LSTM 和它们变体的坑中很多年&#xff0c;是时候抛弃它们了&#xff01;在 2014 年&#xff0c;RNN 和 LSTM 起死回生。我们都读过 Colah 的博客《Understanding LSTM Networks》和 Karpathy 的对 RNN 的颂歌《The Unreasonable Effecti…

如何运用并行编程Parallel提升任务执行效率

本文来自小易&#xff0c;【DoTNET技术圈】公众号已获得转载授权。《.NET并发变成实战》读后感&#xff1a;并行编程Parallel手打目录&#xff1a;一、前言二、任务并行库&#xff08;TPL&#xff09;的介绍三、Parallel.Invoke的使用四、Parallel.For的使用五、Parallel.ForEa…

VMware View 与Citrix XenDesktop对决之用户体验篇

看看真实的VMware View 与Citrix XenDesktop对比。 用户体验作为虚拟桌面成功的关键因素&#xff0c;看看VMware View如何在这方面立于不败之地。 对于测试中暴露的差异&#xff0c;您也许会觉得困惑。其实当您了解完下面这些&#xff0c;就全明白了。 Citrix的XenDesktop使用的…

c语言整数四则运算表达式的输出格式控制,Educoder CC++基本输入输出

第1关&#xff1a;重要的事情说三遍1.这里结合的一个具体场景是&#xff1a;程序接受一个输入字符&#xff0c;然后将该字符输出三遍&#xff0c;再输出一个&#xff01;。// 包含标准输入输出函数库#include // 定义main函数int main(){// 请在此添加‘重要的事情说三遍’的代…

通过 GitHub Actions 自动创建 Github Release

通过 GitHub Actions 自动创建 Github ReleaseIntro在 GitHub 上维护了几个小的开源项目&#xff0c;每次在发布新版本的时候会创建一个 release&#xff0c;这样可以比较方便的找到对应的版本的代码&#xff0c;不需要再人肉的从 git log 中找到指定的 commit&#xff0c;而且…

利用win7的applocker功能来有组织的阻止相关软件运行

我有4年没用360相关的软件了&#xff0c;没有360的弹窗用电脑就是舒服。但是我的电脑有时候会有别人来用&#xff0c;我的同学或者我的父母。但是他们经常会自作主张地在我的电脑上装上360卫士&#xff0c;还有360浏览器。每次都是装了我再删&#xff0c;反反复复也不是办法。后…