Первый подход, с помощью -f
опция для rm
команда:
rm -rf /your/path
Второй подход,
yes | rm -r /your/path
Первый подход использовал больше для Вашей цели, и второй подход использовал больше для копии или движущихся файлов.
Источник
не является безопасным, так как он выполнит произвольный код. Это может не быть беспокойством для вас, но если файловые разрешения неверны, может быть возможно для атакующего доступом файловой системы для выполнения кода в качестве привилегированного пользователя путем введения кода в файл конфигурации, загруженного в противном случае, например, скрипт init.
До сих пор лучшее решение, которое я смог идентифицировать, - это неуклюжее восстановительное колесо:
MyScript.conf
password=bar
echo rm -rf /
PROMPT_COMMAND='echo "Sending your last command $(history 1) to my email"'
hostname=localhost; echo rm -rf /
Использование Источник
, это будет работать Echo RM -RF /
Дважды, а также изменить работу пользователя $ Prompt_command
. Вместо этого сделайте это:
myscript.sh (Bash 4)
#!/bin/bash
typeset -A config # init array
config=( # set default values in config array
[username]="root"
[password]=""
[hostname]="localhost"
)
while read line
do
if echo $line | grep -F = &>/dev/null
then
varname=$(echo "$line" | cut -d '=' -f 1)
config[$varname]=$(echo "$line" | cut -d '=' -f 2-)
fi
done < myscript.conf
echo ${config[username]} # should be loaded from defaults
echo ${config[password]} # should be loaded from config file
echo ${config[hostname]} # includes the "injected" code, but it's fine here
echo ${config[PROMPT_COMMAND]} # also respects variables that you may not have
# been looking for, but they're sandboxed inside the $config array
MyScript.Sh (Mac / Bash 3-совместимый)
#!/bin/bash
config() {
val=$(grep -E "^$1=" myscript.conf 2>/dev/null || echo "$1=__DEFAULT__" | head -n 1 | cut -d '=' -f 2-)
if [[ $val == __DEFAULT__ ]]
then
case $1 in
username)
echo -n "root"
;;
password)
echo -n ""
;;
hostname)
echo -n "localhost"
;;
esac
else
echo -n $val
fi
}
echo $(config username) # should be loaded from defaults
echo $(config password) # should be loaded from config file
echo $(config hostname) # includes the "injected" code, but it's fine here
echo $(config PROMPT_COMMAND) # also respects variables that you may not have
# been looking for, but they're sandboxed inside the $config array
Пожалуйста, ответьте, если вы найдете безопасность в моем коде.
-121--17348- Это читается по RELORTY_USER
и root
. Никто другой, если только Remote_Command
записывает его в глобально читаемый файл или что-то в этом роде.
Вы можете проверить среду процесса в файловой системе / PROC
в / ProC / $ PID / Enviry
. Вам либо нужно быть одним и тем же пользователем, что и EUID
из $ PID
или необходимо быть root
, так как разрешения этого файла кажутся по умолчанию -R---- ----
.
Помимо использования окружающей среды, вы также можете пройти пароль через stdin
по трубе в SSH
. Если вы используете в SSH, только root и целевую программу (и это дети) смогут добраться до него, насколько я знаю (предполагая $ (Cat / proc / sys / kernel / yama / ptrace_scope) == 1
).