Ответы:
Чтобы выполнить сценарий, вам нужно ввести полный путь к сценарию, если сценарий не присутствует в одном из каталогов, перечисленных в $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
?