1

В командной строке Ubuntu вы можете выполнить sudo -i и ввести пароль root для входа в систему как root . Мой вопрос, когда вы должны войти в систему как этот root в Ubuntu (или Linux)? Это просто, чтобы не вводить sudo в командах, требующих привилегий root ?

4 ответа4

5

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

root - это исторический артефакт систем Unix/Linux. Во многих системах по умолчанию установлен пользователь root например RedHat и CentOS, но, насколько мне известно, Ubuntu специально заставляет вас по умолчанию использовать пользователя без полномочий root для выполнения действий, необходимых для sudo/root . sudo родилась из-за необходимости не допускать, чтобы root был таким известным и уязвимым целевым пользователем, и делегировать привилегии root другим пользователям в системе контролируемым и целенаправленным образом. Как объясняется в « Судо в двух словах »:

Sudo (su "do") позволяет системному администратору предоставить определенным пользователям (или группам пользователей) возможность выполнять некоторые (или все) команды от имени пользователя root при регистрации всех команд и аргументов. Sudo работает на основе команд, это не замена оболочки. Его функции включают в себя:

  • Возможность ограничить какие команды пользователь может запускать для каждого хоста.
  • Sudo ведет обильную регистрацию каждой команды, предоставляя четкий контрольный журнал того, кто что сделал. При использовании в тандеме с syslogd, демон системного журнала, sudo может записывать все команды на центральный хост (а также на локальный хост). В CU все администраторы используют sudo вместо корневой оболочки, чтобы воспользоваться преимуществами этой регистрации.
  • Sudo использует файлы меток времени для реализации системы "продажи билетов". Когда пользователь вызывает sudo и вводит свой пароль, ему предоставляется билет на 5 минут (это время ожидания настраивается во время компиляции). Каждая последующая команда sudo обновляет билет еще на 5 минут. Это позволяет избежать проблемы с тем, чтобы оставить корневую оболочку, где другие могли бы физически добраться до вашей клавиатуры. Кроме того, пользователь может легко удалить свой файл заявки, который может быть помещен в файл .logout.
  • Файл конфигурации Sudo, файл sudoers , настроен таким образом, что один и тот же файл sudoers может использоваться на многих машинах. Это позволяет осуществлять централизованное администрирование, сохраняя гибкость в определении прав пользователя для каждого хоста. Пожалуйста, посмотрите файл примеров sudoers ниже для реального примера.

На практике использование sudo заставляет конечного пользователя задуматься о том, что он делает. Если бы я просто rm -rf * качестве пользователя root команда работала бы… Но в 99% случаев все, что кто-либо делает в системе Unix/Linux, не нуждается в привилегиях root . Так что иметь неограниченную власть как root все время глупо, в худшем - рискованно.

Кроме того, поскольку root - это известная учетная запись, многие системные администраторы по умолчанию отключают учетную запись root и блокируют ее и назначают эквивалентные права через sudo другому пользователю. Хотите верьте, хотите нет, просто отключение root - это один из самых быстрых, простых и лучших способов обеспечения базовой безопасности системы от попыток входа в систему через SSH. Просто создайте нового пользователя - что-то вроде cooldude - и затем предоставьте этому пользователю права sudo и ваша система уже на прочной основе.

Причина в том, что gajillion «детишки сценариев» и готовые инструменты проникновения в систему нацелены на root доступ посредством (казалось бы) бесконечных попыток входа в SSH прямо из коробки. Эти стандартные инструменты проникновения в систему являются в лучшем случае универсальными и безмозглыми инструментами. Вы оставляете root активным с простым паролем и ожидаете возникновения проблемы. Но просто давая права администратора кому-то вроде cooldude все эти сценарии теперь неэффективны. Да, конечно, если кто-то знает, что ваш root эквивалент - cooldude он может нацелиться на это ... Но в 99,9999% случаев злоумышленник не будет достаточно амбициозен, чтобы вникать так глубоко.

Переключитесь на root на свой страх и риск. Я делаю профессиональную работу администрирования системы Linux и не трогал root мимо начальной установки сцены в течение последних 20 лет.

5

когда вы должны войти в систему как этот root в Ubuntu (или Linux)? Это просто, чтобы не вводить sudo в командах, требующих привилегий root?

Моя интерпретация ваших вопросов:

  • Существуют ли сценарии, когда вы должны использовать sudo -i потому что sudo недостаточно?
  • Или sudo -i - просто избегать многократного ввода sudo , но не дает другого преимущества?

Основным преимуществом sudo -i является запуск оболочки. Затем вы можете использовать каналы, перенаправления и т.д. В качестве пользователя root. Рассматривать:

sudo dd if=/dev/sdc conv=noerror bs=32M | pv | gzip -c > /root/image.raw.gz

В этом случае sudo влияет только на dd . Пока вас просят ввести пароль, pv уже запущен, ваш дисплей становится грязным. В то же время ваша оболочка сообщает вам, что у вас нет доступа к /root/image.raw.gz , несмотря на использование sudo ; это потому, что перенаправление (>) выполняется оболочкой, которая работает без sudo .

Есть несколько методов, чтобы обойти эти препятствия. Следующий список, вероятно, не является исчерпывающим:

  1. Запустите sudo true заранее и введите свой пароль. Ваш sudo не предложит вам снова через несколько минут, если не настроено иначе.
  2. Используйте sudo tee вот так:

    sudo dd if=/dev/sdc conv=noerror bs=32M | pv | gzip -c | sudo tee /root/image.raw.gz > /dev/null
    
  3. Или выполните команду внутри дополнительной оболочки:

    sudo bash -c 'dd if=/dev/sdc conv=noerror bs=32M | pv | gzip -c > /root/image.raw.gz'
    
  4. Или запустите эту дополнительную оболочку и работайте в ней: sudo bash или sudo -i (хотя обе команды не совсем эквивалентны).

Так что тебе не нужно -i . Он может не существовать, вы все равно сможете делать что-то от имени root.


Другое преимущество может заключаться в том, что sudo -i запускает оболочку, которая получает файлы корня (например, .profile), в то время как sudo bash или sudo bash -l используют вызывающие файлы пользователя. Я могу себе представить, что для root может быть определена среда, предназначенная для выполнения административных задач. В этом случае sudo -i полезен.


Опасности работы в оболочке, работающей с привилегиями root, описаны в других ответах. Я не буду повторять их.

2

sudo -i - это просто 1 способ получить интерактивный сеанс с правами root. (Существует множество других способов, доступных в Ubuntu, включая sudo /bin /bash, включение пароля root и вход в систему как root).

Идея, лежащая в основе всего этого, - "наименьшая привилегия". Для большинства повседневных задач (просмотр веб-страниц, редактирование фотографий, офисные документы и т.д.) Вам не нужно проникать во внутренние системы. Работа в качестве обычного пользователя не позволяет вам делать какие-то глупости в вашей системе, и это лучшая практика.

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

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

Доступ sudo / root аналогичен "запуску от имени администратора" на Windows-сервере и предоставляет аналогичные преимущества и разочарования. Я отмечаю, что sudo можно использовать не только для получения root-доступа, но и для получения доступа к другим пользователям без полномочий root. Существуют также элементы управления и разрешения (обычно настраиваемые в / etc / sudoers или /etc/sudoers.d), которые могут позволять определенным пользователям запускать только определенные вещи с повышенными привилегиями и / или предоставлять доступ без дополнительного пароля для некоторых пользователей.

1

Не следует входить в систему как пользователь root, если для этого нет особых причин. Когда вы вошли в систему как root, у вас есть возможность, в худшем случае, уничтожить всю систему. Некоторые системы UNIX/Linux по умолчанию запрещают вход в систему привилегированным пользователям, чтобы предотвратить такое возникновение. Заставить пользователя войти в систему как обычный пользователь и использовать sudo для выполнения повышенных команд - это мера безопасности.

Я уверен, что многие люди на SU и других сайтах StackExchange, связанных с ИТ (включая меня), совершили ошибку входа в систему как root (или администратор в Windows) и забыли. Затем они сделали то, чего они очень не хотели делать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .