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

Sun JVM доступна в виде MSI, который выполняется из скрипта.

http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment-guide/install-msi.html

7
задан 05.05.2020, 05:01

4 ответа

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

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

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

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

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

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

0
ответ дан 05.05.2020, 05:01

Не рекомендуется связываться с /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
ответ дан 05.05.2020, 05:02
  • 1
    Различие с многопользовательским аспектом. "/usr/local/bin" для всех. " ~/bin" только предназначен для текущего пользователя. "/usr/local/bin" должен будет базироваться права. " ~/bin" won' t. – rafaelncarvalho 05.05.2020, 05:02
  • 2
    Просто наблюдение: по умолчанию в Ubuntu ~/bin уже добавляется к $PATH, даже если ~/bin уже не создается. Можно проверить ~/.profile файл для наблюдения этого. – Steve Py 05.05.2020, 05:03
  • 3
    Попытка добавить это к моему ответу, как только я добираюсь до машины Ubuntu. – Avin Kavish 05.05.2020, 05:03
  • 4
    хорошая идея @MadMike:), Но don' t Вы думаете так, чтобы/usr/local/bin был предназначен для показа той же идеи?? Я спрашиваю это, потому что я плохо знаком с Linux и не абсолютно уверен в Вашей идее " ~/bin" и "/usr/loca/bin". – Rahul Singh 05.05.2020, 05:03

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

В вашей системе у вас есть 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
ответ дан 05.05.2020, 05:02

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

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

0
ответ дан 05.05.2020, 05:03

Теги

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