#security #bash #permissions #root
#Безопасность #bash #разрешения #root
Вопрос:
Мне нужно выполнить некоторые серверные задачи. Я много-много раз слышал, что это очень небезопасно. Это мое решение:
Добавлена эта строка в sudoers: www-data ALL=NOPASSWD: /var/private-www/bin/webadmin
(Недоступна через Web)
Создал этот скрипт var/private-www/bin/webadmin
:
# Script for executing server tasks.
#
# Arguments:
# - Password Required for authentication, not all scripts may run this file
# - Action Action to execute
# Exit codes:
# 0 Failed
# 1 Success
# First of all check the password
if [ $1 = "secretpassword" ]
then
whoami
exit 1
else
echo "No access"
exit 0
fi
Файл обладает следующими правами:
0111
Доступ по SSH разрешен только для одной учетной записи. Таким образом, никто не может выполнить скрипт, кроме меня (и www-data). www-data теперь может получить доступ к этому файлу, выполнив: exec('/usr/bin/sudo /var/private-www/bin/webadmin secretpassword', $output, $status);
Достаточно ли это безопасно? Как я могу сделать его более безопасным?
Комментарии:
1. if/then/else обычно имеет горизонтальный отступ, а не вертикальный. 🙂
Ответ №1:
Я думаю, что если ваш сервер Apache взломан, кто-то может получить доступ к этому скрипту и выполнить его, но я могу ошибаться.
Я наткнулся на ресурс, о котором вы, возможно, захотите прочитать, особенно когда речь идет об ограничении вашего скрипта внутренней сетью.
http://www.linuxsecurity.com/content/view/133913/171/
Надеюсь, это ответ на ваш вопрос.