作者hrs113355 (小分分)
看板EE_DSnP
标题[闲聊] 关於$path的设定
时间Wed Sep 23 17:09:53 2009
今天上课的时候老师提到环境变数 $path 的设定和使用中,
示范自订的部分将 "." (当前目录) 加入 $path 的比对的list中,
之前看过几篇文章和文件中提到,这样设定也许会造成安全性的隐忧,
因为此项设定的效果在任何时候当前的目录也会被列入command 搜寻的考量中,
有一个比较极端的例子是:
假使有人在 /tmp 中放置恶意程式,但是刻意将档名取为和一些常用的指令
相同如 ls 、 cp 等等,那麽在 /tmp 中下达这些指令的时候可能就会触发
恶意程式。
当然这是比较极端的例子,但是当使用的时间一久时,也许目录中会有与常
用指令命名相似或相同的程式,在使用时就很有可能造成混乱。
如果还是希望可以直接使用当前目录下的程式又希望将这个隐忧降到最小时
,可以考虑在 $path 的设定中,将 "." 放在最後面,例如:
PATH = /usr/local/bin:/usr/bin:/bin:/usr/games:
.
因为 shell 在比对指令时是依照由左到右的顺序作为优先序,这样比对时
就会把 "." 放在最後的优先序,会先到预设的程式目录搜寻,搜寻不到时
才会回到当前目录,避免下常用指令时,却被恶意程式覆盖或和当前目录
程式混乱的问题。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.249.58
1F:推 anfranion:原PO专业~ 09/23 17:14
2F:推 master1x4:实用! 09/23 17:25
3F:推 bnsblue:实用! 09/23 18:51
4F:推 ric2k1:嗯, 的确应该考虑将 '.' 放在 path 的最後面... 09/24 01:00
5F:→ ric2k1:不过这样的缺点就是有时候自己写的程式执行档的名称取得 09/24 01:02
6F:→ ric2k1:不好的话 (如: test), 就会执行到系统的程式而产成意想不到 09/24 01:03
7F:→ ric2k1:结果... 09/24 01:04