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

7

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

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

Это прекрасно работает.

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

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

Мой вопрос

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

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

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

Ubuntu 13.10, 32-бит.

    
задан v1h5 16.01.2014 в 07:30
источник

4 ответа

12

Не рекомендуется связываться с /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, расширенную с вашим каталогом.

    
ответ дан MadMike 16.01.2014 в 09:04
источник
3

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

В вашей системе Environment Variables . Одна из них PATH variable, которая хранит набор каталогов, где находятся исполняемые программы и скрипты. В 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 здесь

    
ответ дан c0rp 16.01.2014 в 08:07
источник
2
  1.   

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

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

  2.   

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

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

      

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

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

ответ дан sgx1 16.01.2014 в 07:52
источник
0

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

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

    
ответ дан Danatela 16.01.2014 в 08:11
источник

Ознакомьтесь с другими вопросами по меткам