Назад | Перейти на главную страницу

В чем разница между командой sudo и командой sudo bash -c?

Есть ли разница между следующими двумя командами?

sudo su - root

и

sudo bash -c 'su - root'

Это кажется глупым вопросом, но я считаю, что для безопасности есть некоторая выгода, если разрешить только второй. Я просто не знаю, какая от этого польза. Не могли бы вы дать мне совет по этому поводу?

sudo su пуски su напрямую с привилегиями суперпользователя, а sudo bash сначала запускает оболочку, а затем выполняет команду с bash -c.

Основное отличие будет заключаться в том, что ваш .bashrc скрипт будет запущен перед выполнением su - root команда. От этого зависит исход.

Случаи использования:

  • Лаух bash с повышенными привилегиями, используя собственный пароль:

    sudo bash
    
  • Оболочка Lauch как пользователь root, с паролем root:

    su - root
    
  • Оболочка Lauch как пользователь root, с вашим собственным паролем:

    sudo su - root
    
  • Все уже покрыто, на самом деле нет необходимости:

    sudo bash -c 'su - root'
    

Sudo не позволит вам выполнять перенаправление команд изначально; например, следующее не сработает - при попытке записи все еще отказано в разрешении:

sudo echo -e “\x23\x21/usr/bin/sudo /bin/bash\napt-get update\napt-get -y dist-upgrade” > /usr/bin/distupgrade && sudo chmod a+x /usr/bin/distupgrade

Заворачивая все в sudo bash -c решает эту проблему:

sudo bash -c “echo -e \”\x23\x21/usr/bin/sudo /bin/bash\napt-get update\napt-get -y dist-upgrade\” > /usr/bin/distupgrade && chmod a+x /usr/bin/distupgrade”

Вместо этого вам следует использовать

sudo -i

su и sudo - два очень разных способа повышения привилегий, но в конечном итоге оба позволяют запускать команды от имени целевого пользователя - в вашем случае root.

sudo использует ваше имя пользователя и ваши группы, чтобы решить, можете ли вы выполнить команду, в то время как su ожидает, что вы знаете пароль вашего целевого пользователя - за исключением пользователя root, который может стать кем угодно без пароля.

Когда ты бежишь sudo su - root вы дважды аутентифицируетесь, на практике для создания оболочки с правами root, что вы можете сделать, запустив sudo -i