Ответы:
Чтобы выполнить сценарий, вам нужно ввести полный путь к сценарию, если сценарий не присутствует в одном из каталогов, перечисленных в $PATHпеременной среды. Обычно (и по умолчанию) .(текущий каталог) не находится в вашем $PATH, поэтому вам нужно набрать его, ./scriptчтобы выполнить.
Потому что текущий каталог не в вашем пути. Это функция безопасности. Если бы он был у вас на пути, кто-то мог бы потенциально отбросить вредоносную копию обычной команды, и, например, когда вы находитесь в этом каталоге, вместо того, чтобы запускать настоящий sudo, вы запускаете поддельную. Это было бы плохо.
.были /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?