Почему плохо войти в систему как root?
Я часто сталкиваюсь с сообщениями на форумах или других веб-сайтах, где вы видите, как люди шутят о том, чтобы запускать / входить в систему как root, как будто это что-то ужасное, и каждый должен знать об этом. Тем не менее, не так много, что поиск показывает по этому вопросу.
Это может быть широко известно специалистам по Linux, но я действительно не знаю почему. Я помню, как всегда запускал как root, когда впервые попробовал Linux много лет назад (Redhat и Mandrake), и не помню, чтобы из-за этого возникали какие-либо проблемы.
На самом деле есть некоторые дистрибутивы, которые имеют ярко-красный фон с предупреждающими надписями в качестве обоев для пользователя root (SuSe?). Я все еще использую учетную запись "Администратор" для регулярного использования в моей установке Windows и никогда не сталкивался с какими-либо проблемами там.
22 ответа
Это побеждает модель безопасности, которая существовала годами. Приложения должны запускаться с неадминистративной безопасностью (или как простые смертные), поэтому вам необходимо повысить их привилегии, чтобы изменить базовую систему. Например, вы не хотели бы, чтобы недавний крах Rhythmbox уничтожил весь ваш /usr
каталог из-за ошибки. Или ту уязвимость, которая была только что опубликована в ProFTPD, чтобы позволить злоумышленнику получить оболочку ROOT.
В любой операционной системе просто рекомендуется запускать приложения на уровне пользователя и оставлять административные задачи пользователю root и только по мере необходимости.
Одно слово: безопасность.
- Вы вошли в систему как root = все приложения работают с привилегиями root - каждая уязвимость в Firefox, Flash, OpenOffice и т. Д. Теперь может разрушить вашу систему, потому что возможные вирусы теперь имеют доступ повсюду. Да, вирусов для Ubuntu/Linux очень мало, но это также из-за хорошей безопасности и непривилегированного пользователя по умолчанию.
- Речь идет не только о вирусах - небольшая ошибка в приложении может стереть некоторые системные файлы или...
- Когда вы вошли в систему как root, вы можете делать все - система не спросит! Вы хотите отформатировать этот диск? Хорошо, всего один клик, и все готово, потому что вы root и знаете, что делаете...
Запуск от имени root плох, потому что:
- Глупость. Ничто не мешает тебе делать глупости. Если вы попытаетесь изменить систему в любом случае, что может быть вредным, вам нужно сделать sudo, что в значительной степени гарантирует паузу, пока вы вводите пароль, чтобы вы поняли, что собираетесь сделать возможное большое / дорогостоящее изменение.
- Безопасность: это уже упоминалось несколько раз в этом вопросе, но в основном это одно и то же, сложнее взломать, если вы не знаете учетную запись администратора. root означает, что у вас уже есть половина рабочего набора учетных данных администратора.
- Вам это действительно не нужно: если вам нужно запустить несколько команд от имени пользователя root, и вас раздражает необходимость несколько раз вводить пароль по истечении срока действия sudo, все что вам нужно сделать, это
sudo -i
и вы теперь root. Хотите выполнить некоторые команды, используя каналы? Тогда используйтеsudo sh -c "comand1 | command2"
, - Вы всегда можете использовать его в консоли восстановления: консоль восстановления позволяет вам попытаться восстановиться после выполнения глупых действий или устранения проблемы, вызванной приложением (которое вам все равно приходилось запускать как sudo:)). В Ubuntu нет пароля. для корневой учетной записи в этом случае, но вы можете искать в Интернете, чтобы изменить это, это усложнит для любого, кто имеет физический доступ к вашему ящику, возможность причинить вред.
Причина, по которой вы не смогли найти информацию о том, почему это плохо, заключается в том, что в Интернете слишком много данных:) и многие люди, которые давно используют Linux, думают так же, как и вы. Такой подход к учетной записи root довольно новый (может быть, десятилетие?), И многие люди все еще раздражаются, что им приходится использовать sudo. Особенно, если они работают на сервере, что означает, что они вошли с намерением внести системные изменения. Вероятно, это связано с прошлым плохим опытом и стандартами безопасности, которые большинство сисадминов знают лучше, но им все равно это не нравится:).
Это хороший вопрос. Я думаю, что ответ немного отличается в зависимости от того, говорите ли вы о сервере или установке на компьютере.
На рабочем столе редко используется root
учетная запись. На самом деле Ubuntu поставляется с отключенным доступом root. Все изменения, требующие привилегий суперпользователя, выполняются через sudo
и его графические родственники gksudo
а также kdesudo
, Учитывая, что легко установить root
пароль, однако, почему люди не делают это?
Одна из причин в том, что это дает вам дополнительный уровень безопасности. Если вы запускаете программу как root
и уязвимость безопасности используется, злоумышленник имеет доступ ко всем данным и может напрямую контролировать оборудование. Например, он может установить троян или key-logger в ваше ядро. Однако на практике атака может нанести большой урон даже без привилегий суперпользователя. В конце концов, все пользовательские данные, включая документы и сохраненные пароли, доступны без прав 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
для сокращенных периодов работы, чтобы избежать риска ошибок.
TL;DR: Делайте вещи как root только тогда, когда вам нужно. sudo
делает это довольно легко Если вы включаете root-логины, вы все равно можете следовать этому правилу, вам просто нужно соблюдать осторожность. Хотя включение корневых учетных записей на самом деле небезопасно, если все сделано правильно, вам не нужно включать корневые учетные записи, потому что у вас есть sudo
,
Здесь действительно два связанных вопроса.
- Почему плохо входить в систему как пользователь root для повседневного использования компьютера (просмотр веб-страниц, электронная почта, обработка текстов, игры и т. Д.)?
- Почему Ubuntu по умолчанию вообще отключает root-логины и использует
sudo
и polkit, чтобы позволить администраторам запускать определенные команды от имени пользователя root?
Почему бы не запустить все как root, все время?
Большинство других ответов покрывают это. Это сводится к:
- Если вы используете полномочия root для задач, которые не требуют их, и в конечном итоге вы делаете то, что не хотели делать, вы можете изменить или повредить свою систему так, как вам не нужно.
- Если вы запускаете программу как пользователь root, когда вам это не нужно, и она в конечном итоге делает что-то, чего вы не хотели делать - например, из-за уязвимости в системе безопасности или другой ошибки - она может измениться или нанести вред ваша система так, как вы не хотите.
Это правда, что даже не делая рута, вы можете причинить вред. Например, вы можете удалить все файлы в вашем собственном домашнем каталоге, который обычно включает в себя все ваши документы, без запуска от имени root! (Надеюсь, у вас есть резервные копии.)
Конечно, у пользователя root есть дополнительные способы случайно уничтожить те же данные. Например, вы можете указать неправильный of=
аргумент dd
командуйте и записывайте необработанные данные поверх ваших файлов (что делает их более сложными для восстановления, чем если бы вы просто удалили их).
Если вы единственный человек, который использует ваш компьютер, то вред, который вы можете нанести только пользователю root, на самом деле может быть не выше, чем вред, который вы можете нанести своим привилегиям обычного пользователя. Но это по-прежнему не является причиной для расширения вашего риска, чтобы включить дополнительные способы испортить вашу систему Ubuntu.
Если работа с учетной записью без полномочий root не позволяет вам осуществлять контроль над своим компьютером, то это, конечно, будет плохим компромиссом. Но это не так - всякий раз, когда вы действительно хотите выполнить действие от имени пользователя root, вы можете сделать это с sudo
и другие методы.
Почему бы не сделать возможным вход в систему как root?
Идея о том, что возможность входа в систему от имени пользователя root небезопасна, является мифом. В некоторых системах учетная запись root включена по умолчанию; другие системы используют sudo
по умолчанию, а некоторые настроены с обоими.
- Например, OpenBSD, которая широко и разумно считается самой безопасной ОС общего назначения в мире, поставляется с корневой учетной записью, включенной для локального входа на основе пароля.
- Другие уважаемые ОС, которые делают это, включают RHEL, CentOS и Fedora.
- Debian (из которого происходит Ubuntu) предлагает пользователю решить, какой подход будет настроен во время установки системы.
Это не объективно неправильно иметь систему, в которой включена корневая учетная запись, при условии, что
- вы все еще используете его только тогда, когда вам действительно нужно, и
- вы ограничиваете доступ к нему соответствующим образом.
Часто новички спрашивают, как включить учетную запись root в Ubuntu. Мы не должны скрывать эту информацию от них, но обычно, когда люди спрашивают об этом, это потому, что у них ошибочное впечатление, что им нужно включить учетную запись root. На самом деле в этом почти никогда нет необходимости, поэтому, отвечая на такие вопросы, важно объяснить это. Включение учетной записи root также облегчает самоуспокоенность и выполнение действий от имени root, для которых не требуются привилегии root. Но это не означает, что включение учетной записи root само по себе небезопасно.
sudo
поощряет и помогает пользователям запускать команды от имени пользователя root только тогда, когда это необходимо. Чтобы запустить команду от имени пользователя root, введите sudo
, пробел, а затем команда. Это очень удобно, и многие пользователи всех уровней квалификации предпочитают такой подход.
Короче говоря, вам не нужно включать root-логины, потому что у вас есть sudo
, Но до тех пор, пока вы используете его только для административных задач, которые в этом нуждаются, он примерно одинаково безопасен для включения и входа в систему как root, при условии, что это только так:
- Локально, из неграфической виртуальной консоли.
- С
su
команда, когда вошел в систему с другой учетной записи.
Однако существенные дополнительные риски безопасности возникают, если вы входите в систему как root следующими способами:
Графически. Когда вы входите в систему графически, для обеспечения графического интерфейса запускается множество вещей, и вы в конечном итоге запускаете еще больше приложений с правами root, чтобы использовать этот интерфейс для чего угодно. Это идет вразрез с принципом запуска только программ с правами root, которым действительно нужны привилегии root. Некоторые из этих программ могут содержать ошибки, в том числе ошибки безопасности.
Кроме того, есть причина, не связанная с безопасностью, чтобы избежать этого. Графический вход в систему как root не поддерживается - как отмечает loevborg, разработчики настольных сред и графических приложений не часто тестируют их как root. Даже если они это сделают, вход в графическую среду рабочего стола в качестве пользователя root не будет проходить реальное альфа- и бета-тестирование пользователями, поскольку почти никто не пытается это сделать (из соображений безопасности, описанных выше).
Если вам нужно запустить определенное графическое приложение от имени пользователя root, вы можете использовать
gksudo
или жеsudo -H
, Это запускает гораздо меньше программ с правами суперпользователя, чем при графическом входе с учетной записью root.Дистанционно.
root
В действительности учетная запись может делать что угодно, и она имеет такое же имя практически во всех Unix-подобных системах. Войдите в систему как root черезssh
или другие удаленные механизмы, или даже настроив удаленные службы, чтобы позволить это, вы значительно упростите для злоумышленников, включая автоматизированные сценарии и вредоносные программы, работающие в бот-сетях, доступ через грубую силу, атаки по словарю (и, возможно, некоторые ошибки безопасности).Возможно, риск не очень высок, если вы разрешаете только основанные на ключе, а не основанные на пароле корневые учетные записи.
По умолчанию в Ubuntu не разрешены ни графические входы в систему root, ни удаленные входы через SSH, даже если вы включаете вход в систему как root. То есть, даже если вы включите root-вход, он по-прежнему будет активен только в достаточно безопасных режимах.
- Если вы запускаете ssh-сервер в Ubuntu и не изменились
/etc/sshd/ssh_config
, он будет содержать строкуPermitRootLogin without-password
, Это отключает основанный на пароле вход в систему root, но разрешает вход на основе ключа. Однако по умолчанию ни один ключ не настроен, поэтому, если вы его не настроите, он тоже не будет работать. Более того, удаленный вход в систему на основе ключей гораздо менее опасен, чем удаленный вход в систему на основе пароля, отчасти потому, что он не создает риск грубых атак и атак по словарю. - Несмотря на то, что настройки по умолчанию должны защищать вас, я думаю, что все же будет хорошей идеей проверить вашу конфигурацию ssh, если вы собираетесь включить учетную запись root. И если вы используете другие сервисы, которые предоставляют удаленный вход в систему, например, ftp, вы должны также проверить их.
В заключение:
- Делайте вещи как root только тогда, когда вам нужно;
sudo
поможет вам сделать это, и в то же время предоставит вам все возможности root в любое время, когда вы этого захотите. - Если вы понимаете, как работает root, и опасно злоупотреблять им, включение учетной записи root не является проблематичным с точки зрения безопасности.
- Но если вы понимаете это, вы также знаете, что вам почти наверняка не нужно включать учетную запись root.
Для получения дополнительной информации о корне и sudo
включая некоторые дополнительные преимущества sudo
что я здесь не освещал, я настоятельно рекомендую RootSudo в справочной вики Ubuntu.
Корневая учетная запись по умолчанию отключена - это означает, что она существует, но ее нельзя использовать (кроме как в режиме восстановления). Это означает, что злоумышленник знает о вашей учетной записи root, но не может использовать ее, даже если у него / нее был пароль root. Таким образом, злоумышленник должен угадать как имя пользователя с правами администратора, так и пароль этого пользователя (что гораздо сложнее, чем просто попытка определить пароль root). В XP, если у вас установлена консоль восстановления, любой, кто имеет физический доступ к вашему ящику, может загружаться в него (RC) - пароль не требуется. То же, что и режим восстановления в Ubuntu.
В Ubuntu, когда говорят, что рут отключен, на самом деле подразумевается, что учетная запись заблокирована. Учетная запись блокируется путем изменения пароля на значение, которое не соответствует ни одному из возможных зашифрованных значений. Это фактически препятствует тому, чтобы кто-либо мог войти в систему как пользователь root, поскольку не было бы никакого способа, которым они могли бы ввести пароль. Поскольку по-прежнему требуются права доступа root, ядро Ubuntu было изменено, чтобы разрешить локальный вход в систему root только в однопользовательском режиме.
Также смотрите эту страницу
Это все равно, что вооружить маленького ребенка с АК-47, в то время как он может счастливо играть со своим пейнтбольным пистолетом.;)
Я имею в виду, что это неправильно, потому что у вас и ваших приложений будет больше привилегий, чем им нужно, и именно тогда все может и иногда пойдет не так:(
Очень хороший вопрос... Позвольте мне ответить на него с практической точки зрения:
Когда я начал использовать Linux, который более 10 лет назад, основные дистрибутивы не рекламировали с использованием учетных записей без полномочий root, как сегодня. Поскольку я привык к Windows, я также не видел смысла в использовании ограниченной учетной записи пользователя. В частности, потому что мне приходилось часто вводить "su" - тогда sudo не было так популярно.;-) Так что я всегда входил в систему как root, потому что мне нужно было много обслуживания, чтобы правильно настроить мою систему. Но угадайте, что любая свежая установленная система стала очень нестабильной.
Например, одна конкретная проблема: у меня не так много места на жестком диске, зарезервированного для Linux, поэтому мне случалось несколько раз, что на моем разделе оставалось 0 байт. Возможно, я не совсем точен, потому что я не знаю точного механизма, но когда вы заполняете диск учетной записью без полномочий root, всегда остается несколько килобайт. Но если у вас действительно осталось 0 байт, ваша система делает странные ошибки, и вы можете столкнуться с некоторыми трудностями для исправления повреждений в вашей системе, потому что в фоновом режиме работает много системного программного обеспечения...
Другое дело: это разделение между root и non-root обеспечивает хорошую организацию вашей системы. Как пользователь root, у вас может возникнуть соблазн не устанавливать чистые новые приложения, что оставляет вас в грязной, трудно обслуживаемой системе.
Но хорошо: современные дистрибутивы выполняют большинство административных задач за вас, поэтому вам редко приходится вмешиваться в вашу систему Linux с учетной записью root. Время от времени достаточно вводить пароль, остальное - скрипты дистрибьютора.
Но я сомневаюсь, что у вас не было проблем в вашей системе Windows с этим, если вы использовали 95 или 98. (По крайней мере, у меня были проблемы с этим...) Из-за отсутствия четкого разделения между администратором и обычным пользователем "традиционный "Приложения для Windows предполагают, что они могут делать все, например, устанавливать шпионское ПО, если им так хочется, даже не говоря вам об этом. Microsoft занималась этим вопросом при выпуске Vista. (Эффективно реализуя механизм sudo.) Таким образом, люди получили очень раздражающие диалоги, говорящие: "Вы не можете этого сделать". Для некоторых не-Vista-совместимых программ вам потребовалось несколько грязных хаков, даже если вы были администратором...
У этого подхода много аспектов. Некоторые из них:
вот хорошая статья: http://cf.stanford.edu/policy/root
rm /*
Допустим, вы убирали административный район. Вы устали от пароля, поэтому вы sudo su
, Вы отвлекаетесь только на секунду и забыли, что /
, Затем вы rm *
, Я сделал это. Вы можете получить все это обратно, но это ПИТА. О, и он спустился в /media
тоже!
Почему бы не иметь root-логин?
Несмотря на то, что вы можете создать пароль для учетной записи суперпользователя, позволяющий войти в систему как root, стоит отметить, что это не "Ubuntu" способ делать вещи. В Ubuntu по какой-то причине по умолчанию решили не вводить логин и пароль root. Вместо этого по умолчанию будет установлена Ubuntu sudo
,
Sudo - это альтернатива предоставлению людям пароля root для выполнения обязанностей суперпользователя. При установке Ubuntu по умолчанию человеку, который установил ОС, по умолчанию предоставляется разрешение "sudo".
Любой, имеющий разрешение "sudo", может выполнить что-то "как суперпользователь", предварительно ожидая sudo
к их команде. Например, чтобы запустить apt-get dist-upgrade
в качестве суперпользователя вы можете использовать:
sudo apt-get dist-upgrade
Преимущества подхода sudo
С помощью sudo вы заранее выбираете, какие пользователи имеют доступ к sudo. Им не нужно запоминать пароль root, так как они используют свой собственный пароль.
Если у вас несколько пользователей, вы можете отозвать права суперпользователя, просто удалив их разрешение sudo, без необходимости изменять пароль root и уведомлять всех о новом пароле.
Вы даже можете выбрать, какие команды пользователю разрешено выполнять с помощью sudo, а какие команды запрещены для этого пользователя.
И, наконец, в случае нарушения безопасности в некоторых случаях можно оставить лучший контрольный журнал, показывающий, какая учетная запись пользователя была взломана.
Sudo упрощает выполнение одной команды с привилегиями суперпользователя. При входе в систему под root вы навсегда останетесь в суперпользовательской оболочке, которую необходимо закрыть, используя exit
или же logout
, Это может привести к тому, что люди будут оставаться в оболочке суперпользователя дольше, чем необходимо, только потому, что это удобнее, чем выход из системы и повторный вход позже.
С помощью sudo у вас все еще есть возможность открыть постоянную (интерактивную) оболочку суперпользователя с помощью команды:
sudo su
... и это все еще можно сделать без пароля root, потому что sudo
дает привилегии суперпользователя su
команда.
И аналогично вместо su -
для входа в систему вы можете использовать sudo su -
или даже sudo -i
,
Однако при этом вам просто нужно знать, что вы действуете как суперпользователь для каждой команды. Это хороший принцип безопасности - не оставаться суперпользователем дольше, чем это необходимо, просто чтобы уменьшить вероятность случайного повреждения системы (без него вы можете повредить только файлы, которыми владеет ваш пользователь).
Просто чтобы уточнить, вы можете, если вы решите, дать пользователю root пароль, позволяющий входить в систему как root, если вы специально хотите сделать это таким образом. Я просто хотел, чтобы вы знали о соглашении Ubuntu о предпочтении sudo
вместо этого, попробуйте объяснить некоторые причины, по которым Ubuntu предпочитает такой подход по умолчанию.
Почему бы не разрешить root-вход через SSH?
Даже если у вашего пользователя root есть пароль, позволяющий вам войти в систему как root, все равно хорошей практикой безопасности является отключение прямого входа в систему root извне, например, в SSH. Для пользователей разумно иметь su -
или же sudo
после первоначального входа.
Потенциальные выгоды для этого в основном связаны с безопасностью:
Это уменьшает вектор атаки, устраняя возможность грубого взлома пароля root. Обычно сервер в Интернете постоянно подвергается попыткам взломать пароль root через SSH.
Это создает лучший контрольный журнал, так что даже в случае нарушения, когда злоумышленник получит привилегии суперпользователя позже, вы сможете увидеть, чья учетная запись пользователя использовалась для получения доступа.
При входе в систему как пользователь root позволяет приложениям, сценариям или командам командной строки получать доступ к чувствительным частям программного обеспечения, которые могут повредить систему. Это может быть результатом неопытности со стороны пользователя или программиста или из-за вредоносного скрытого кода.
Я могу добавить, что есть разница между Администратором в Windows и root в Unix. Администратор все еще имеет некоторые ограничения в системах, где root не имеет никаких ограничений. Правильный аналог root в Windows - системный пользователь.
Плохая вещь для использования ПК под root/System состоит в том, что вы можете случайно уничтожить что угодно без предупреждения от ОС.
Это просто слишком легко испортить при работе от имени пользователя root. Вы можете уничтожить всю систему одной командой...
Нет никакой опасности при входе в систему как root, если использовать его осторожно.
Хотя я думаю, что отключение root является предпочтительным решением, потому что злоумышленник не может его перебором.
Одним из решений является создание пользователя в группе sudo с непонятным именем, например gamer
и использовать sudo для выполнения административных задач.
Следовательно, злоумышленник должен угадать не только пароль этого администратора, но и его логин. Что не очевидно, если пользователь, использующий sudo, имеет логин, например kitty
или же gamer
или что-то подобное.
Учитывая осведомленный и внимательный пользователь, я не уверен, что правильный ответ существует. Я не видел этот ответ, поэтому я подумал, что должен войти.
Что мне не нравится, так это непреднамеренные изменения разрешений в многопользовательских системах, которые мне нужны chmod
потом. Исправление с помощью chmod после этого гораздо более раздражает, чем необходимость sudo, но это зависит от того, что я запланировал.
Причины использования root:
- Может случайно уничтожить системные файлы
- Может заразиться
- Не регистрирует действия
Причины использования root:
- Доступ ко всему, без ввода паролей
- GUI, нет необходимости использовать терминалы для управления системными файлами / каталогами
Мне кажется, что учетная запись без полномочий root по-прежнему может стать жертвой этих причин против использования root. Самое большее, что она добавляет, - это подтверждение ваших действий. Я думаю, что до тех пор, пока вы знаете, что делаете, вы совершенно безопасны, используя root. Там я это сказал.
Если приложения запускаются как root, нет гарантии, что ни одно из них не выполнится
rm -rf /
(Это пример команды, которую нельзя запускать.)
Это двуличная проблема с более чем одним ответом.
Для некоторой проверки реальности на все те же, но о, такие ужасные ответы на это:
desktop installations
:
- используйте своего собственного пользователя и sudo, если это необходимо, в противном случае один успешно использовал вектор атаки, потому что вы не знаете, что делаете, и ваша система взломана
- В больших компаниях, скорее всего, у вас даже не будет привилегий root на вашей рабочей станции, даже если вы администратор, в зависимости от количества присутствующих шляп из фольги.
server installations
:
- существует огромная разница между выполнением ваших коротких рабочих сессий в качестве пользователя root (при условии, что у вас есть логин без пароля, правильное управление ключами ssh для всех серверов - и fail2ban, настроенный для всех входов в систему с паролями, пока вы на нем все равно) и наличием каждого демона / службы работает со своим собственным пользователем (что является обязательным) - большинство людей, кажется, не осознают разницу
- для удовольствия: попробуйте использовать инструменты управления конфигурацией с управлением версиями (ansible/puppet/salt/ что угодно с файлами с git-сервера) только без root-доступа. (у вас есть какая-то форма AAA для этих специальных систем, а также для ваших систем мониторинга и резервного копирования, не так ли?)
- также: по умолчанию
rm -rf /
не работает в большинстве основных дистрибутивов IIRC - на любом серьезном рабочем месте есть хост-хост / бастион для доступа к флоту серверов, который регистрирует все, что вы делаете в любом случае, что, вероятно, дополнительно защищено 2FA
- если у вас есть sudo и нет jumphost, вы можете исправить журналы хостов так, чтобы они заканчивались тем, что вы хотите в любом случае, если они не отражаются в реальном времени, то есть.
- когда журналы ssh также "очищаются", вы даже не можете доказать, что они были на хосте, если нет системы мониторинга сети.
Для любого размера компании (читай: скорее всего, SOHO со статическим ip) между этими двумя крайностями, в которых отсутствуют надлежащие меры мониторинга / резервного копирования / автоматизации / ведения журнала, может оказаться полезным принудительное использование sudo на серверах. (Который обходится людьми, делающими sudo su -
Как можно скорее после подключения, позволяя всем вашим намерениям регистрировать то, что произошло, теряется даже без злонамеренных намерений, как только в систему войдет более одного пользователя root. Удачи, изменив это с помощью принудительных процедур и обратившись к людям с драконовскими мерами за несоблюдение правил, Жизнь всегда находит выход.)
Но если у вас нет, по крайней мере, fail2ban для защиты ваших паролей (если они есть, особенно в системах, подключенных к Интернету), плюс подумайте о правильной обработке паролей (инструменты управления паролями, политики хранения, без мастер-паролей, их обработка на сотруднике). колебания...) и имеют некоторую форму надлежащего управления обновлениями для серверного парка, чтобы все серверы регулярно исправлялись, и вы, вероятно, все равно будете когда-нибудь взломаны, будь то изнутри или снаружи.
И всегда использовав sudo
неукоснительно и принудительное использование его среди всех людей не изменит вашей вероятности того, что вы получите большую долю в этом случае.
Программное обеспечение основано на общих библиотеках, зависимостях, файлах конфигурации и т. Д.
В большинстве случаев один щелчок в приложении вызывает "цепную реакцию" нескольких изменений, причем не только там, где вы, вероятно, думаете.
Когда эти изменения могут повлиять на критичные для системы настройки, полезно знать об этом как пользователю.
Вот почему root-доступ является хорошей моделью безопасности:
Если что-то важное произойдет с вашей системой, вы будете уведомлены, когда вас попросят повысить привилегии.
В конечном счете, нет никакого вреда при запуске от имени root. Это просто параноидальные люди, которые думают, что переустановка ОС невозможна. Аргумент "Кто-то может поставить под угрозу программу...", и что? если они это сделают, то они уже могут ввести ваш пароль в кейлог или просто отобразить запрос пароля root, и вы дадите им пароль. Снеси свою систему, потому что ты выбрал все в / и удалил? да ладно, выйди из установщика и переустанови. Это займет не более 20 минут, возьмите кофе и охладите. Root в порядке, я запускаю root столько, сколько себя помню, и вы знаете, что он делает? Это делает установку пакетов меньше головной боли. Вам не нужно вводить пароль root каждые 5 минут, как обычно. Вы не столкнетесь с проблемами при попытке сохранить / отредактировать системные конфигурационные файлы, потому что они имеют только root-права. Намного проще и лучше запускать с правами root.