Безопасно ли размещать символические ссылки в каталоге / bin?

У меня есть много инструментов командной строки, которые я часто использую. Я использовал обычный метод, чтобы пройти полный путь этой команды через терминал, а затем выполнил ./ command-name , НО это трудоемкая и трудоемкая задача.

Изучая тему «Как выполнить команду из любого места через терминал», я нашел решение включить путь в переменную окружения (путем редактирования ./bashrc).

Это отлично работает.

Я даже обнаружил, что все команды, которые работают глобально (например, mkdir, ifconfig, cp и т. Д.), Находятся в каталоге "/ bin".

При включении «символических ссылок» моих команд в каталог «/ bin» все работает нормально, и я могу выполнять команды из любой точки терминала.

Мой вопрос

  1. Безопасно ли размещать символические ссылки в каталоге / bin напрямую. Я спрашиваю об этом, потому что при размещении символических ссылок он запрашивал у меня пароль администратора.

  2. Будет ли какая-либо разница, если я поместу символические ссылки команд в / bin по сравнению с каталогом / usr / bin?

Среда (если это имеет значение):

Ubuntu 13.10, 32-разрядная версия.

7
задан 16 January 2014 в 11:30

4 ответа

Не рекомендуется связываться с /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 показывает, что находится в $ PATH до и после. export позволяет изменить переменную среды. Ваш дополнительный каталог bin добавляется в конец переменной. Это означает, что ваши команды имеют приоритет наименьший , если существует более одной команды с одинаковым именем. Это хорошо, так как вы не хотите переопределять основные системные команды.

Чтобы сделать изменения постоянными, отредактируйте файл ~ / .bashrc.

nano ~/.bashrc

добавить export PATH=$PATH:~/bin в конец этого файла.

Теперь в каждом новом терминальном сеансе переменная $ PATH будет расширяться с помощью вашего каталога.

0
ответ дан 16 January 2014 в 11:30

Прежде чем ответить на ваш вопрос, позвольте мне немного объяснить, «как это работает».

В вашей системе у вас есть Environment Variables . Одна из них PATH - переменная, в которой хранится набор каталогов, в которых находятся исполняемые программы и скрипты. В Linux по умолчанию PATH хранят несколько каталогов. Один из них /bin. Поэтому вы можете выполнить любую программу, которая находится в /bin. Вы можете проверить переменную PATH, выполнив это:

echo $PATH

В PATH порядок переменных в каталогах важен . Имена путей с наивысшим приоритетом указываются первыми.

Теперь отвечаю на ваши вопросы:

  1. Да, безопасно создать символическую ссылку в /bin. Конечно, если вы не переписываете другие исполняемые файлы . Но вы должны предпочесть использовать /usr/local/bin. Это также должно быть в вашем PATH.

  2. Да, это так. В зависимости от порядка в PATH. Например, если вы поместите символические ссылки из разных файлов, но с одинаковыми именами в /bin и /usr/bin и /usr/bin, включенные в PATH ранее, чем /bin, тогда он будет использовать символическую ссылку из /usr/bin. [ тысяча сто двадцать девять] [одна тысяча сто двадцать два]

Вы можете прочитать об Иерархии Файловой Системы здесь

Об переменных среды Ubuntu здесь

0
ответ дан 16 January 2014 в 11:30
  1. Безопасно ли размещать символические ссылки непосредственно в каталоге / bin. Я спрашиваю об этом, потому что при размещении символических ссылок он спрашивал у меня пароль администратора.

    Существует угроза безопасности. Я действительно не думаю, что было бы разумно помещать ваши собственные символические ссылки в каталог / bin, потому что не только ваши команды становятся глобальными, но и символические ссылки могут быть легко разорваны. Переменная окружения bash PATH является более надежным решением.

  2. Будет ли это создавать какую-то разницу, если я помещу символические ссылки команд в / bin по сравнению с каталогом / usr / bin?

    Нет. Хотя согласно Стандарту Иерархии Файловых Систем (FHS) есть разница между / bin и /usr/bin.

    /bin Основные двоичные файлы команд, которые должны быть доступны в однопользовательском режиме; для всех пользователей, например, cat, ls, ср.
    /usr/bin второстепенные двоичные файлы команд (не требуются в однопользовательском режиме); для всех пользователей.

    Но разница не так важна сегодня. На самом деле в некоторых дистрибутивах (особенно в Fedora) существует тенденция исчезать из каталога / bin.

0
ответ дан 16 January 2014 в 11:30

НЕТ !!! Не прикасайтесь к системным каталогам. Каждый сценарий или программу, которую вы написали, вы обычно должны помещать в каталоги /usr/local/bin и /usr/local/sbin. И добавление каталогов в PATH не очень хорошая идея, потому что это создает угрозу безопасности.

Кроме того, разница между теми каталогами, которые есть для суперпользовательских программ.

0
ответ дан 16 January 2014 в 11:30

Другие вопросы по тегам:

Похожие вопросы: