Почему плохо входить в систему с правами root?

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

Возможно, это широко известно экспертам по Linux, но я действительно не знаю почему. Я помню, что всегда запускался от имени root, когда я впервые попробовал Linux много лет назад (Redhat и Mandrake), и не помню, чтобы из-за этого возникали какие-либо проблемы.

На самом деле есть некоторые дистрибутивы, которые имеют ярко-красный фон с предупреждающими знаками по всему нему в качестве обоев для пользователя root (SuSe?). Я по-прежнему использую учетную запись "Администратор" для регулярного использования при установке Windows и там тоже никогда не сталкивался с какими-либо проблемами.

Это разрушает модель безопасности, которая существует уже много лет. Приложения предназначены для запуска с неадминистративной безопасностью (или как простые смертные), поэтому вам необходимо повысить их привилегии, чтобы изменить базовую систему. Например, вы бы не хотели, чтобы недавний сбой Rhythmbox уничтожил весь ваш /usr каталог из-за ошибки. Или та уязвимость, которая только что была опубликована в ProFTPD, чтобы позволить злоумышленнику получить корневую оболочку.

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

Всего одно слово: безопасность.

  1. Вы вошли в систему как root = все приложения запущены с правами root - все уязвимости в Firefox, Flash, OpenOffice и т.д. теперь это может разрушить вашу систему, потому что возможные вирусы теперь имеют доступ повсюду. Да, для Ubuntu /Linux существует всего несколько вирусов, но это также из-за хорошей безопасности и непривилегированного пользователя по умолчанию.
  2. Дело не только в вирусах - небольшая ошибка в приложении может привести к удалению некоторых системных файлов или...
  3. Когда вы вошли в систему как root, вы можете делать все - система не будет спрашивать! Вы хотите отформатировать этот диск? Хорошо, всего один клик, и все готово, потому что вы root и знаете, что делаете...

Запуск от имени root - это плохо, потому что:

  1. Тупость: Ничто не мешает вам сделать какую-нибудь глупость. Если вы попытаетесь изменить систему в любом случае, что может быть вредным, вам нужно выполнить sudo, который в значительной степени гарантирует паузу во время ввода пароля, чтобы вы поняли, что собираетесь внести возможные большие / дорогостоящие изменения.
  2. Безопасность: Это уже упоминалось довольно много раз в этом вопросе, но в основном это одно и то же, сложнее взломать, если вы не знаете учетную запись администратора для входа в систему. root означает, что у вас уже есть половина рабочего набора учетных данных администратора.
  3. На самом деле тебе это не нужно: Если вам нужно выполнить несколько команд от имени root и вас раздражает необходимость вводить свой пароль несколько раз, когда истек срок действия sudo, все, что вам нужно сделать, это sudo -i и теперь ты - корень. Хотите запустить некоторые команды с помощью каналов? Затем используйте sudo sh -c "comand1 | command2".
  4. Вы всегда можете использовать его в консоли восстановления: Консоль восстановления позволяет вам попытаться восстановиться после совершения какой-либо глупости или устранения проблемы, вызванной приложением (которое вам все равно пришлось запускать как sudo :)) В этом случае в Ubuntu нет пароля для учетной записи root, но вы можете выполнить поиск в Интернете, чтобы изменить его, это затруднит нанесение вреда любому, у кого есть физический доступ к вашему ящику.

Причина, по которой вы не смогли найти информацию о том, почему это плохо, заключается в том, что в Интернете слишком много данных :) и что многие люди, которые уже давно используют Linux, думают так же, как и вы. Такой подход к учетной записи root довольно новый (может быть, десять лет назад?), И многих людей все еще раздражает необходимость использовать sudo. Особенно, если они работают на сервере, что означает, что они вошли с намерением внести системные изменения. Вероятно, это связано с предыдущим неудачным опытом и стандартами безопасности, которые большинство системных администраторов знают лучше, но им все равно это не нравится :).

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

На рабочем столе редко можно использовать root счет. На самом деле Ubuntu поставляется с отключенным root-ателя Все изменения, требующие привилегий суперпользователя sudo и его графические аналоги gksudo и kdesudo. Учитывая, что легко установить root пароль, однако, почему люди этого не делают?

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

Более обоснованным моментом в однопользовательской системе является то, что пользователь не может случайно сделать систему непригодной для использования. Если пользователь непреднамеренно выдаст команду, которая удалит все файлы, он все равно сможет загрузить систему, даже если данные будут потеряны.

Кроме того, большинство современных пользовательских приложений (X11) построены на предположении, что они запускаются от имени обычной учетной записи пользователя и без прав администратора. Таким образом, некоторые программы могут плохо себя вести при запуске как root.

В многопользовательской системе с доступом только к неграфической оболочке многие из этих причин неприменимы. Тем не менее, Ubuntu по-прежнему разумно использует по умолчанию недоступный root счет. Во-первых, существует реальная разница между получением доступа к учетной записи пользователя (с sudo права) через дыру в системе безопасности и получение доступа к root, как и в первом случае , для прерывания работы других пользователей потребуется запустить sudo и по-прежнему будет запрашивать пароль учетной записи в качестве дополнительного шага безопасности. С другой стороны, полезно выполнять многие административные задачи из учетной записи пользователя и вызывать только sudo когда привилегии суперпользователя абсолютно необходимы. Таким образом, при установке программы из исходного кода желательно создать исходный код, работающий configure и make - внутри каталога пользователя и только с помощью sudo make install на заключительном этапе. Опять же, это затрудняет стрельбу себе (и другим пользователям многопользовательской системы) в ногу и снижает вероятность того, что сценарии сборки нанесут ущерб системе. Таким образом, даже на сервере рекомендуется придерживаться Ubuntu администрирование на основе sudo.

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

В противном случае основными причинами отказа от запуска от имени root являются:

  • Сведите к минимуму риск повреждения в результате несчастных случаев. Если ты побежишь rm -fr / home/me/my-subdir как root, тогда вы просто резко удалили все важное с вашей машины из-за этого пробела после (первой) косой черты - потому что первым идет то, что было добавлено первым - такие мелочи, как ядро, /bin и /etc каталог. Unix расстраивается, если вы их теряете.

  • Сведите к минимуму риск повреждения от вредоносных внешних сайтов. Если вы просматриваете как root Таким образом, вы более уязвимы для случайных загрузок вредоносных материалов.

Я использую macOS X чаще, чем Ubuntu, но там root по умолчанию отключен, и он все еще находится на моей машине. Я регулярно обновляю ядро и другие подобные операции - с помощью sudo (за кулисами). Аналогичные методы применимы и к Linux в целом.

В принципе, вы должны использовать только всемогущие привилегии root для сокращенных периодов работы, чтобы избежать риска ошибок.

ТЛ;Д-Р: Делайте что-то от имени root только тогда, когда это необходимо. sudo делает это довольно просто. Если вы включите root-логин, вы все равно можете следовать этому правилу, просто будьте осторожны при этом. Хотя включение корневых логинов на самом деле не является небезопасным, если все сделано правильно, вам не нужно включать корневые логины, потому что у вас есть sudo.

Есть действительно два связанные с этим вопросы здесь.

  • Почему плохо входить в систему как root для повседневного использования компьютера (просмотр веб-страниц, электронная почта, обработка текстов, игры и т.д.)?
  • Почему Ubuntu по умолчанию полностью отключает вход в систему root и использует sudo и полкит чтобы разрешить администраторам выполнять определенные команды от имени root?

Почему бы не запускать все от имени root все время?

Большинство других ответов охватывают этот вопрос. Все сводится к:

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

Это правда, что даже не делая ничего как root, вы можете причинить вред. Например, вы можете удалить все файлы в своем собственном домашнем каталоге, который обычно включает в себя все ваши документы, не запускаясь от имени root! (Надеюсь, у вас есть резервные копии.)

Конечно, как root, существуют дополнительные способы случайного уничтожения тех же самых данных. Например, вы могли бы указать неправильный of= аргумент в пользу dd управляйте и записывайте необработанные данные поверх ваших файлов (что значительно затрудняет их восстановление, чем если бы вы просто удалили их).

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

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

Почему бы не сделать возможным вход в систему от имени root?

Идея о том, что возможность входа в систему с правами root изначально небезопасна, является мифом. В некоторых системах по умолчанию включена учетная запись root; в других системах используется sudo по умолчанию, а некоторые настроены и на то, и на другое.

  • Например, OpenBSD, которая широко и обоснованно считается самой безопасной ОС общего назначения в мире, поставляется с включенной учетной записью root для локального входа на основе пароля.
  • Другие уважаемые операционные системы, которые делают это, включают РХЕЛЬ, ЦентОС, и Фетровая шляпа.
  • Дистрибутив debian (из которого Ubuntu происходит от) позволяет пользователю решить, какой подход будет настроен во время установки системы.

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

  1. вы по-прежнему используете его только тогда, когда вам действительно нужно, и
  2. вы соответствующим образом ограничиваете доступ к нему.

Часто новички спрашивают, как включить учетную запись root в Ubuntu. Мы не должны скрывать от них эту информацию, но обычно, когда люди спрашивают об этом, это происходит потому, что у них сложилось ошибочное впечатление, что они необходимость чтобы включить учетную запись root. На самом деле, в этом почти никогда нет необходимости, поэтому, отвечая на такие вопросы, важно, чтобы мы объяснили это. Включение учетной записи root также позволяет легко успокоиться и выполнять действия от имени root, которые не требуют привилегий root. Но это не означает, что включение учетной записи root является сам по себе небезопасный.

sudo поощряет и помогает пользователи выполняют команды от имени root только тогда, когда им это необходимо. Чтобы запустить команду от имени пользователя root, введите sudo, пробел, а затем команда. Это очень удобно, и многие пользователи всех уровней квалификации предпочитают такой подход.

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

Однако при входе в систему от имени пользователя root этими способами возникают существенные дополнительные риски для безопасности:

  • Графически. Когда вы входите в систему графически, выполняется множество функций для обеспечения графического интерфейса, и в конечном итоге вы запускаете еще больше приложений от имени root, чтобы использовать этот интерфейс для чего угодно. Это противоречит принципу запуска только тех программ от имени root, которые действительно нуждаются в привилегиях root. Некоторые из этих программ могут содержать ошибки, в том числе ошибки безопасности.

    Кроме того, существует причина, не связанная с безопасностью, чтобы избежать этого. Вход в систему графически от имени пользователя root поддерживается недостаточно хорошо--как упоминает Левборг Однако разработчики настольных сред и графических приложений не часто тестируют их как root. Даже если они это сделают, вход в графическую среду рабочего стола с правами root не проходит реального альфа- и бета-тестирования пользователями, поскольку почти никто не пытается это сделать (по соображениям безопасности, объясненным выше).

    Если вам нужно запустить определенное графическое приложение от имени root, Вы можете использовать gksudo или sudo -H. Это позволяет запускать гораздо меньше программ от имени root, чем если бы вы фактически вошли в систему графически с учетной записью root.

  • Удаленно. То root учетная запись, по сути, может делать все, что угодно, и она имеет одно и то же имя практически в каждой Unix-подобной системе. Войдя в систему как root через ssh или другими удаленными механизмами, или даже с помощью настройка удаленных служб, чтобы разрешить это, вы значительно облегчаете злоумышленникам, в том числе автоматизированным скриптам и вредоносным программам, работающим в ботнетах, получение доступа с помощью грубой силы, атак по словарю (и возможно некоторые ошибки безопасности).

    Возможно, риск не очень высок, если вы допускаете только основанный на ключах, и не основанный на пароле корневые логины.

По умолчанию в Ubuntu не включены ни графические корневые логины, ни удаленные логины через SSH, даже если вы включите вход в систему от имени пользователя root. То есть, даже если вы включите root-вход, он все равно будет включен только достаточно безопасными способами.

  • Если вы запускаете ssh-сервер в Ubuntu и не изменили /etc/sshd/ssh_config, он будет содержать строку PermitRootLogin without-password. Это отключает корневой вход на основе пароля, но разрешает вход на основе ключа. Однако по умолчанию ни один ключ не настроен, поэтому, если вы его не настроили, это тоже не сработает. Кроме того, удаленный корневой вход на основе ключа гораздо менее опасен, чем удаленный корневой вход на основе пароля, отчасти потому, что он не создает риска грубой силы и атак по словарю.
  • Даже несмотря на то, что значения по умолчанию должен чтобы защитить вас, я думаю, что все же неплохо проверить вашу конфигурацию ssh, если вы собираетесь включить учетную запись root. И если вы используете другие службы, которые обеспечивают удаленный вход в систему, например ftp, вам также следует проверить их.

В заключение:

  • Делайте что-то от имени root только тогда, когда вам это нужно; sudo поможет вам сделать это, в то же время предоставляя вам всю мощь root в любое время, когда вы этого захотите.
  • Если вы понимаете, как работает root и каковы опасности его чрезмерного использования, включение учетной записи root на самом деле не является проблемой с точки зрения безопасности.
  • Но если вы понимаете это, вы также знаете, что вы почти наверняка этого не сделаете необходимость чтобы включить учетную запись root.

Для получения дополнительной информации о корне и sudo, включая некоторые дополнительные преимущества sudo то, что я здесь не описал, я настоятельно рекомендую Корни. в справочной вики Ubuntu.

Учетная запись Root по умолчанию отключен - это означает, что он существует, но его нельзя использовать (за исключением режима восстановления). Это означает, что злоумышленник знает о вашей учетной записи root, но не смог бы ее использовать, даже если бы у него был пароль root. Таким образом, злоумышленник должен угадать как имя пользователя с правами администратора, так и пароль этого пользователя (что гораздо сложнее, чем просто пытаться вычислить пароль root).В XP, если у вас установлена консоль восстановления, любой, у кого есть физический доступ к вашему ящику, может загрузиться в него (RC) - пароль не требуется. То же, что и режим восстановления в Ubuntu.

В Ubuntu, когда говорят, что root отключен - на самом деле имеется в виду, что учетная запись заблокирована. Учетная запись блокируется путем изменения пароля на значение, которое не соответствует никакому возможному зашифрованному значению. Это эффективно препятствует тому, чтобы кто-либо мог войти в систему с правами root, поскольку у них не было бы возможности ввести пароль. Поскольку все еще бывают случаи, когда необходим root-доступ, ядро Ubuntu было изменено, чтобы разрешить локальный вход root только в однопользовательском режиме.

Также смотрите это страница

Это все равно, что вооружить маленького ребенка АК47, в то время как он может с удовольствием играть со своим пейнтбольным пистолетом. ;)

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

Очень хороший вопрос... Позвольте мне ответить на него с практической точки зрения:

Когда я начал использовать Linux, а это было более 10 лет назад, основные дистрибутивы не рекламировали использование некорневых учетных записей так часто, как сегодня. Поскольку я привык к Windows, я также не видел смысла в использовании ограниченной учетной записи пользователя. В частности, потому, что мне приходилось очень часто вводить "su" - sudo тогда не был так популярен. ;-) Поэтому я всегда входил в систему с правами root, потому что мне нужно было много обслуживать, чтобы моя система была хорошо настроена. Но знаете что, любая свежеустановленная система быстро становилась очень нестабильной.

Например, одна конкретная проблема: у меня не было так много места на жестком диске, зарезервированного для Linux, поэтому со мной несколько раз случалось, что на моем разделе оставалось 0 байт. Может быть, я не совсем точен, потому что не знаю точного механизма, но когда вы заполняете диск с помощью некорневой учетной записи, всегда остается несколько килобайт. Но если у вас действительно осталось 0 байт, ваша система выдает странные ошибки, и вы можете столкнуться с некоторыми трудно исправимыми повреждениями в вашей системе, потому что в фоновом режиме работает много системного программного обеспечения...

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

Но есть и хорошая вещь: современные дистрибутивы выполняют за вас большинство задач администрирования, поэтому вам редко приходится копаться в недрах вашей системы Linux с учетной записью root. Достаточно время от времени вводить пароль, остальное делают скрипты дистрибьютора.

Но я сомневаюсь, что у вас не было проблем с вашей системой Windows, если вы использовали 95 или 98. (По крайней мере, у меня были проблемы с этим ...) Из-за отсутствия четкого разделения между администратором и обычным пользователем "традиционные" приложения Windows предполагают, что они могут делать все, что угодно, например, устанавливать шпионские программы, если им захочется, даже не сообщая вам об этом. Корпорация Майкрософт решила эту проблему при выпуске Vista. (Эффективная реализация механизма sudo.) Таким образом, люди получили очень раздражающие диалоги, в которых говорилось: "Вы не можете этого сделать". Для некоторых программ, не совместимых с Vista, для их установки требовались некоторые грязные хаки, даже в качестве администратора...

За этим подходом стоит множество аспектов. Некоторые из них являются:

  • Корень всемогущ.
  • В Unix и Unix-подобных системах привилегии системного администрирования - это все или ничего. Пользователь либо имеет root-доступ, либо нет, а root-доступ подразумевает полный контроль над машиной. Если рассматриваемый компьютер используется более чем одним человеком или root имеет доступ к другим системам или пользовательским файлам, более приемлемо предоставить некоторым пользователям частичные права root.

  • Пользователь root может скрывать все свои действия.
  • sudo регистрирует каждую команду, выполняемую через sudo. Наличие записей о том, что делается с помощью sudo, помогает нам диагностировать проблемы с отдельными системами / процессами и общие проблемы с конфигурацией, а также помогает нам определить необходимые улучшения.

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

    вот хорошая статья : http://cf.stanford.edu/policy/root

    Я думаю, что нет никаких проблем в запуске программы от имени root. Просто вы можете нанести вред ядру вашей ОС (даже sudoers могут это сделать), если вы не очень разбираетесь в Linux. кроме этого, я не думаю, что есть какие-то проблемы. Но это только моя точка зрения.

    @GauravButola даже если вы эксперт, это все равно плохая идея, если приложение будет скомпрометировано.

    @DaboRoss OP комментирует, что он работает в Windows как администратор; для моего (небольшого) опыта работы с этой ОС мне кажется, что это больше похоже на Ubuntu: это привилегированная учетная запись в том смысле, что она может делать все, что вы хотите, но она * запрашивает * разрешение, например, перед установкой новое программное обеспечение. Так что, вероятно, эквивалентом использования пользователя “администратор” в Windows, переведенного на Ubuntu, было бы запустить основного пользователя с sudo, настроенным так, чтобы он не запрашивал пароль - запуск напрямую от имени root намного опаснее.

    Связанный с этим вопрос здесь.

    Сложность перехода в корневой режим варьируется в зависимости от дистрибутива. Лично меня раздражает то, что Fedora не позволяет вам “sudo” прямо из коробки. Однако в openSUSE и Ubunto есть предварительно настроенный sudo … и поэтому, если вы выберете правильный дистрибутив, вы сможете свести к минимуму свои неприятности из-за невозможности получить доступ к файлам.

    Ну — AFAIK, даже запуск от имени администратора в Windows похож на способ Ubuntu — вас по-прежнему запрашивают разрешение на выполнение вредоносных действий (возможно, без пароля).

    @Rmano sudo - это то, что “запрашивает авторизацию”. Если вы запускаете программу от имени root, ей не нужно запрашивать разрешение, чтобы делать плохие вещи с вашей системой, она может просто делать их.

    @Rmano, Да, я думаю, это то, что я пытался сказать. В этом, по сути, и заключается разница между запуском от имени учетной записи администратора и запуском от имени root. Что я хотел сказать оператору, так это то, что существует огромная разница между учетной записью root и учетной записью администратора.

    возможный дубликат Почему у меня нет пароля для “su”? Проблемы с “sudo”