将符号链接放在/ bin目录中是否安全?

我经常使用许多命令行工具。 我正在使用常规方法遍历该命令的完整路径,然后执行./command-name但这是一项麻烦且耗时的任务。

研究“如何通过终端从任何地方执行命令”这一主题,我最终在解决方案中将路径包含在环境变量中(通过编辑./bashrc)。

这很好用。

我甚至发现所有全局工作的命令(如mkdir,ifconfig,cp等)都放在“/ bin”目录中。

在“/ bin”目录中包含我的命令的“符号链接”,一切正常,我可以从终端的任何地方执行命令。

我的问题

  1. 将符号链接直接放在/ bin目录中是否安全。 我问这个是因为在放置符号链接时,它问我管理员密码。

  2. 如果我将命令’symlinks放在/ bin中与/ usr / bin目录相比,它会产生任何差异吗?

环境(如果重要):

Ubuntu 13.10,32位。

不推荐使用/bin/usr/bin即使这样可行也有点不安全。 此外,您不需要在那里放置符号链接。

我有同样的问题,就像你提到的那样。 导航到脚本并且每次都像./myscript一样调用它们很麻烦。 这就是我做的。

定义您自己的bin目录

您可以创建自己的bin目录并将脚本放在那里。 用它创建它

 mkdir ~/bin 

现在您需要篡改PATH环境变量。 这是一个敏感区域。 如果弄乱PATH变量,您将无法再执行具有相对路径的命令。 如果发生这种情况, ls可能不再起作用/bin/ls仍然可以。

我现在要展示的内容只会影响当前正在运行的终端会话。 因此,如果出现任何问题,您只需使用Ctrl + D注销,一切就像以前一样。

 echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games export PATH=$PATH:~/bin echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/home/madmike/bin 

echo -command显示$ PATH之前和之后的内容。 export允许您更改环境变量。 您的附加bin目录将附加到变量的末尾。 这意味着如果有多个具有相同名称的命令,则命令的优先级最低 。 这很好,因为您不想覆盖基本的系统命令。

要使更改成为永久更改,请编辑〜/ .bashrc文件。

 nano ~/.bashrc 

export PATH=$PATH:~/bin到该文件的末尾。

现在,每个新的终端会话都将使用您的目录扩展$ PATH变量。

在回答你的问题之前,让我解释一下“它是如何工作的”。

在您的系统中,您有Environment Variables 。 其中一个PATH变量,用于存储可执行程序和脚本所在的目录集。 在Linux中,默认情况下, PATH存储一些目录。 其中一个/bin 。 这就是为什么你可以执行任何位于/bin 。 您可以检查执行此操作的PATH变量:

 echo $PATH 

PATH ,目录的变量顺序很重要 。 首先指定优先级最高的路径名。

现在回答你的问题:

  1. 是的,在/bin创建符号链接是安全的。 当然,如果你不重写其他可执行文件 。 但您应该更喜欢使用/usr/local/bin 。 它也必须在你的PATH

  2. 是的。 取决于PATH顺序。 例如,如果您将/bin/usr/bin以及/usr/bin包含的不同文件但名称相同的符号链接添加到/bin之前的PATH ,那么它将使用来自/usr/bin符号链接。

您可以在此处阅读有关文件系统层次结构的信息

关于Ubuntu环境变量

  1. 将符号链接直接放在/ bin目录中是否安全。 我问这个是因为在放置符号链接时,它问我管理员密码。

    存在安全风险。 我真的不认为将自己的符号链接放在/ bin目录中是明智的,因为不仅您的命令变为全局,而且符号链接也很容易被破坏。 bash PATH环境变量是一个更强大的解决方案。

  2. 如果我将命令’symlinks放在/ bin中与/ usr / bin目录相比,它会产生任何差异吗?

    不是。虽然根据文件系统层次标准(FHS) ,/ bin和/ usr / bin之间存在差异。

    /bin需要在单用户模式下可用的基本命令二进制文件; 适用于所有用户,例如cat,ls,cp。
    /usr/bin非必要命令二进制文件(在单用户模式下不需要); 适用于所有用户。

    但今天的差异并不那么重要。 实际上,某些发行版(尤其是Fedora)倾向于淡出/ bin目录。

没有!!! 请勿触摸系统目录。 您编写的每个脚本或程序通常应放在/usr/local/bin/usr/local/sbin目录中。 向PATH添加目录并不是一个好主意,因为它存在安全风险。

此外,那些超级用户程序的目录之间的差异。