Я читал следующий код:
$ sudo bash
# cd /home/
# ./gitpull.sh
Зачем мне нужна первая строка, что она делает? А что если я просто сделаю $ sudo
вместо $ sudo bash
?
решение1
Он запускает bash shell как root
пользователь уровня. Он вам нужен, потому что обычно обычные пользователи не могут получить доступ/home/
Опасность того, что вы делаете, заключается в том, что вы находитесь в оболочке root — вы можете довольно легко испортить свою машину.
решение2
Гораздо лучше будет сделать следующее:
$ sudo sh -c 'cd /home; ./gitpull.sh'
Потому что команды, вызванные как root, будут регистрироваться. Вызов оболочки напрямую через sudo исключает все преимущества безопасности sudo и его следует избегать.
решение3
sudo <shell>
Если это сработает, это выдаст неправильную установку sudo и потенциальную уязвимость безопасности.
sudo
не следует настраивать для разрешения произвольных команд, таких как shell; цель sudo
— разрешить аутентифицированным не-root-пользователям запускать определенные команды как root, не зная пароля root.
Если sudo bash
это разрешено любому пользователю, то этот пользователь является пользователем root просто в силу знания своего пароля.
Если злоумышленник получит пароль любой из учетных записей, которые могут сделать sudo bash
, то он, таким образом, получит права root.
Правильный способ сделать то же самое sudo bash
(получить root shell) — это su
ввести пароль root, а не свой собственный.
решение4
sudo
позволяет пользователям запускать программы с привилегиями безопасности другого пользователя (обычно суперпользователя или root).
bash
запускает новую оболочку bash.
Итак, sudo bash
запускает новую оболочку bash с привилегиями безопасности пользователя root.