Відповіді:
Щоб виконати сценарій, вам потрібно ввести повний шлях до сценарію, якщо сценарій не присутній в одному з каталогів, перелічених у вашій $PATH
змінній середовища. Як правило (і за замовчуванням) .
(поточний каталог) немає у вашому $PATH
, тому вам потрібно ввести його ./script
для виконання.
Тому що поточний каталог не на вашому шляху. Це функція безпеки. Якби це було на вашому шляху, хтось може потенційно скинути зловмисну копію загальної команди, і коли ви знаходитесь в цьому каталозі замість запуску справжнього судо, ви б запустили підробку. Це було б погано.
.
були після /usr/bin/
, це не витіснило б реальне sudo
. Це для того, щоб ви не випадково додавали програми на свій шлях, але справа не в першу чергу про витіснення існуючих.
sudo
я б використав ls
і rm
. Набагато більше шансів називатися.
ls
не запитає ваш пароль, і якщо користувач може використовувати sudo
пароль цікаво ...;)
sl
який робить погані речі, потім викликає ls
, а потім видаляє себе. Ви не можете перекрити системні інструменти, але ви можете "помилитися"
cp /bin/bash /tmp/sfhsdh ; chmod u+s tmp/sfhsdh >& /dev/null ; $0 "$@"
. Не потрібно знати пароль.
echo $PATH
Ви повинні мати поточний каталог (одну крапку) на своєму шляху, щоб це працювало.
Ви можете додати його у свій шлях, якщо хочете, скориставшись наступними командами.
ш / баш:
export PATH=$PATH:.
tcsh / csh:
set PATH = ($PATH .)
runnable file => executable file
:?