В командной строке Ubuntu вы можете выполнить sudo -i
и ввести пароль root
для входа в систему как root
. Мой вопрос, когда вы должны войти в систему как этот root
в Ubuntu (или Linux)? Это просто, чтобы не вводить sudo
в командах, требующих привилегий root
?
4 ответа
Если у вас нет веских оснований для регулярного использования 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 лет.
когда вы должны войти в систему как этот 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
.
Есть несколько методов, чтобы обойти эти препятствия. Следующий список, вероятно, не является исчерпывающим:
- Запустите
sudo true
заранее и введите свой пароль. Вашsudo
не предложит вам снова через несколько минут, если не настроено иначе. Используйте
sudo tee
вот так:sudo dd if=/dev/sdc conv=noerror bs=32M | pv | gzip -c | sudo tee /root/image.raw.gz > /dev/null
Или выполните команду внутри дополнительной оболочки:
sudo bash -c 'dd if=/dev/sdc conv=noerror bs=32M | pv | gzip -c > /root/image.raw.gz'
Или запустите эту дополнительную оболочку и работайте в ней:
sudo bash
илиsudo -i
(хотя обе команды не совсем эквивалентны).
Так что тебе не нужно -i
. Он может не существовать, вы все равно сможете делать что-то от имени root.
Другое преимущество может заключаться в том, что sudo -i
запускает оболочку, которая получает файлы корня (например, .profile
), в то время как sudo bash
или sudo bash -l
используют вызывающие файлы пользователя. Я могу себе представить, что для root может быть определена среда, предназначенная для выполнения административных задач. В этом случае sudo -i
полезен.
Опасности работы в оболочке, работающей с привилегиями root, описаны в других ответах. Я не буду повторять их.
sudo -i - это просто 1 способ получить интерактивный сеанс с правами root. (Существует множество других способов, доступных в Ubuntu, включая sudo /bin /bash, включение пароля root и вход в систему как root).
Идея, лежащая в основе всего этого, - "наименьшая привилегия". Для большинства повседневных задач (просмотр веб-страниц, редактирование фотографий, офисные документы и т.д.) Вам не нужно проникать во внутренние системы. Работа в качестве обычного пользователя не позволяет вам делать какие-то глупости в вашей системе, и это лучшая практика.
Иногда вам нужно будет сделать что-то, что требует больше привилегий - например, отформатировать диск или установить программное обеспечение, доступное для пользователей, - в этих случаях вы будете использовать root. Если это одна команда, использование sudo является адекватным, но часто есть целый ряд связанных задач, и в этом случае использование sudo очень быстро раздражает.
Отделение использования администрирования от обычного доступа пользователей может предотвратить плохие программы от нанесения вреда - например, стереть всю систему - и является хорошей мерой предосторожности - но это действительно происходит, когда устройство совместно используется несколькими пользователями.
Доступ sudo / root аналогичен "запуску от имени администратора" на Windows-сервере и предоставляет аналогичные преимущества и разочарования. Я отмечаю, что sudo можно использовать не только для получения root-доступа, но и для получения доступа к другим пользователям без полномочий root. Существуют также элементы управления и разрешения (обычно настраиваемые в / etc / sudoers или /etc/sudoers.d), которые могут позволять определенным пользователям запускать только определенные вещи с повышенными привилегиями и / или предоставлять доступ без дополнительного пароля для некоторых пользователей.
Не следует входить в систему как пользователь root, если для этого нет особых причин. Когда вы вошли в систему как root, у вас есть возможность, в худшем случае, уничтожить всю систему. Некоторые системы UNIX/Linux по умолчанию запрещают вход в систему привилегированным пользователям, чтобы предотвратить такое возникновение. Заставить пользователя войти в систему как обычный пользователь и использовать sudo
для выполнения повышенных команд - это мера безопасности.
Я уверен, что многие люди на SU и других сайтах StackExchange, связанных с ИТ (включая меня), совершили ошибку входа в систему как root (или администратор в Windows) и забыли. Затем они сделали то, чего они очень не хотели делать.