Linux系统:当前目录与PATH变量,安全问题
来源:互联网 发布:淘宝处方药品货到付款 编辑:程序博客网 时间:2024/05/22 16:45
Linux系统:当前目录与PATH变量,安全问题
当前工作目录:UNIX 和 Linux系统中使用 pwd 命令查看,放在$PWD 变量中的目录。英文名:current directory或者 working directory。
pwd 是 print working directory 的缩写。
在Linux系统中,执行命令时,即使当前工作目录下存放了所输入命令的 可执行文件 或者 可执行脚本,Linux也是找不到这个命令的,因为Linux 搜索命令的时候是根据$PATH变量去寻找的,而当前工作目录” . “ (这里是个点号,表示当前目录)是不列入 $PATH中的。
可是有人就奇怪了,那为什么不把当前目录 “ . ” 放到$PATH中呢,回答曰:安全。
这里的安全,一个是说防止攻击方面的安全,比如你下了一个软件,然后你去执行tar ,gzip,cat 之类的本地软件时。假如你下载的软件恶意的存在了这样的同名可执行文件,并且你下载完后,刚好就在这个目录,那么你执行这样的命令的时候……结果可想而知。
除了它人的原因外,还有自己的原因。比如我们经常会自己用c语言或者其它的语言写一些程序,然后编译、链接为可执行文件。假如我们的可执行文件是做一些不可恢复性的操作,比如删除文件,格式化磁盘之类的。而这些文件名字又恰巧和我们系统$PATH下的某些常用可执行文件名字相同时,那么结果会出乎我们的意料。
也就是说当前目录是总在变化的,一会我们cd 到这儿了,一会又cd 到另一个地方去了。这样的话,当前目录下有哪些可执行文件也会随着改变的。有时候我们不会太在意自己处于的目录位置,如果当前目录在$PATH中,那么我们也就不清楚自己干了什么。
而$PATH 里面则放置了一些固定的目录,这些目录是不会变化的,这样的话,当我们输入命令时,永远可以保证不会随着自己的位置改变,而导致出乎意料。
同样的Linux下的编译器 gcc 的两个选项 -L 和 -I ,也默认不会包含当前目录的,这样的话,如果我们的头文件,或者函数库即使在当前目录中,如果没有使用 -L 或者 -I指定的话,那么也是会找不到。这样做同样也是为了安全方面,因为假如我们 -lm,自以为链接了/usr/lib中的libm.so库,可是如果刚好目录下也有同样的库时,链接后的可执行文件可能同样会出乎我们的意料,甚至链接了危险的东西……
所以涉及到安全,隐晦,可变的方面,Linux会尽量用一种安全的方法或者机制保证。如果我们需要使用某些特性,那么好,你自己手动去指定好了,出事了你自己负责就行了。
这种感觉有点类似于C++ 的更严格的语法,比如说空指针是不能赋值给其它类型的指针的,如果直接赋值,c++会报错。你假如真的想赋值,好,你自己在语法上强制指定,这样的话你会知道自己在干嘛,出事了不要怪编译器。
- Linux系统:当前目录与PATH变量,安全问题
- Linux 系统变量设置文件 (PATH)
- copy目录 path变量
- Linux 文件与目录系统
- linux path目录设置
- Linux PATH 变量
- linux系统中运行当前目录中的可执行文件
- 查看linux系统当前进程运行目录详情
- Linux命令常放置的位置与PATH变量设置
- Linux 获取当前目录
- linux 获取当前目录
- Linux获取当前目录
- 当前工作目录与当前执行目录
- python 获取 当前目录 系统目录 , 及更改当前目录
- 获取当前系统运行目录
- MFC获取系统当前目录
- linux磁盘分区与系统目录介绍
- linux系统架构与目录解析
- three.js 源码注释(五十二)Material /MeshFaceMaterial.js
- TCP发送源码学习(2)--tcp_write_xmit
- 2014_12_27
- 我为什么要写FansUnion个人官网-BriefCMS-电子商务malling等系统
- 两个CRunTime库排序算法调用,但是更值得注意的”指针“以及“三目”
- Linux系统:当前目录与PATH变量,安全问题
- LeetCode[Tree]: Construct Binary Tree from Inorder and Postorder Traversal
- BNUOJ 44583 Star Trek: First Contact
- poj 2895 Best SMS to Type 模拟
- ubuntu系统下wireshark普通用户抓包设置
- TCP发送源码学习(3)--tcp_transmit_skb
- 我真的很想说出来
- HDU 5115 Dire Wolf (区间DP)
- pkg-config and ldconfig