• Linux 小知识翻译


    这次聊聊路径的使用,这里的路径是「命令搜索路径」的简称。

    在Linux上执行命令的时候,本来是需要命令的所在位置的绝对路径的,就像「/usr/bin/passwd」这样。

    但是,对于经常使用的命令,如果每次都要输入绝对路径的话就非常麻烦了。

    在Linux的Shell中,执行某个命令时,用户不用输入命令的完整路径,直接输入命令后,系统会在特定的目录中查找这个命令,找到后执行。

    这时,设置Shell在哪些目录中搜索命令的步骤就被称为「路径设置」,正确的应该是「命令搜索路径的设置」

    为了设置路径,需要修改环境变量「PATH」,每个希望搜索的目录之间用「:」区分开。

    设置方法就是用 [[16. 「环境变量」]] 介绍的「export」命令,比如,想把「/usr/sample」这个路径加入到命令搜索路径中去的话,

    $ export PATH=$PATH:/usr/sample

    在Linux中,当前目录并不在命令搜索路径中,因此,比如想执行当前目录下的「hogehoge.cmd」命令,必须要通过「./hogehoge.cmd」来执行。

    虽然有些麻烦,但是把当前目录加入到命令搜索路径中的话,会带来一些安全问题,所以不建议把当前目录加入到「PATH」中。

    首先,安全的大原则就是「不要把多余的目录加到命令搜索目录中」。而且,过多的目录加到命令搜索目录中的话,那么如果有2个目录中都有「ps」这个文件,用户输入「ps」的时候,究竟哪个「ps」会被执行呢?

    这就会导致混乱。(实际上,会按PATH中定义的目录的顺序来搜索命令的,这2个目录谁在前面,就执行哪个目录中的「ps」。虽然如此,这种情况还是会给用户带来困扰)

    刚刚说的如果把当前目录加入到 PATH 中会导致什么后果呢?

    极端的情况下,几乎所有的目录都有可能变成当前目录(因为用户有可能进入任何一个目录)。这就导致几乎所有的目录都有可能称为命令搜索路径。

    这样的情况下,不仅仅会带来混乱,如果某个目录下被放置了恶意程序,由于这个目录有可能在命令搜索路径中(当用户进入这个目录时),所以用户无意中执行这个恶意程序的机会会很高。

    通常,一般用户能够进出哪些目录是被限制的,系统会保证这些目录不在 PATH 中,一旦用户可以进出的这些目录被加入到 PATH 中,那么恶意程序执行时所带来的风险也会大大增加。

    命令搜索路径不能为了使用方便而任意指定,首先要确保目录的安全性,然后再考虑是否追加到命令搜索路径中。

  • 相关阅读:
    bzoj 2818 Gcd(欧拉函数 | 莫比乌斯反演)
    bzoj 2186 [Sdoi2008]沙拉公主的困惑(欧拉函数,逆元)
    bzoj 2393 Cirno的完美算数教室(容斥原理+搜索)
    c3p0 连接池配置
    Hibernate连接池断开自动重连
    Oracle ASM注意事项
    JAVA如何获得数据库的字段及字段类型
    在引入的css或者js文件后面加参数的作用
    JAVA注解
    Linux软连接和硬链接
  • 原文地址:https://www.cnblogs.com/wang_yb/p/3784844.html
Copyright © 2020-2023  润新知