Если я правильно понимаю философию Linux, sudo
ее следует использовать экономно, и большинство операций следует выполнять как пользователь с ограниченными правами. Но это, кажется, не имеет смысла, так как мне всегда приходится вводить sudo
, управляю ли я пакетами, редактирую ли файлы конфигурации, устанавливаю ли программу из исходного кода, или что у вас есть. Это даже не технические вещи, просто то, что делает обычный пользователь.
Это очень напоминает мне UAC Window, который люди либо отключают, либо настраивают так, чтобы пароль не требовался (просто щелчок). Кроме того, многие пользователи Windows также являются администраторами.
Кроме того, я видел, как некоторые люди отображали команды, для которых не нужны sudo
привилегии sudo
. Их система настроена таким образом, что sudo
не требуется?
sudo
все, что связано с изменением системы, если вы просто работаете с собственными файлами / рабочим столом, вы ни на кого не влияете, поэтому вам не нужны повышенные привилегии. Если вы выполняете привилегированные команды без sudo, вы, вероятно, уже являетесь суперпользователем (то есть root), и это обычно менее целесообразно, чем использование sudo для конкретных общесистемных задачsudo
когда вы не должны? Команды обычного пользователя Unix должны состоять в основном изcd
:ls
перемещения, копирования, удаления и редактирования файлов, к которым он имеет доступ. Если ваши обычные команды не состоят из этого, вы, вероятно, не обычный пользователь Unix.sudo !!
для повторного запуска последней команды, набранной перед sudo.Ответы:
Вы упомянули эти функции системного администрирования
как вещи, которые
В типичной многопользовательской системе это не обычные действия пользователя; системный администратор будет беспокоиться об этом. Обычные пользователи (не «под привилегированным») могут затем использовать систему, не беспокоясь о ее обслуживании.
Да, в домашней системе вам приходится как администрировать систему, так и пользоваться ею.
Это действительно такие трудности в использовании
sudo
? Помните, что если это просто ваша система, то нет никаких причин, по которым вы не можете зайти вroot
оболочку (sudo -s
см. Этот пост для обзора различных способов получения корневой оболочки) и / или настроить,sudo
чтобы не запрашивать пароль.источник
sudo
- это как проверка здравомыслия.Sudo / Root используется всякий раз, когда вы делаете что-то, что обычный пользователь не должен иметь для риска повреждения / изменения конфигурации системы так, как это обычно не допускает администратор системы.
Все это технически функции администратора, которые могут привести к серьезным повреждениям вашей системы, если что-то будет сделано неправильно. В корпоративной среде, как системный администратор, это вещи, которые я НЕ позволил бы своему пользователю делать без моего специального знания, следовательно, sudo.
Например, если файл пакета / конфигурации можно изменить без повышенных привилегий, для внешнего источника будет чрезвычайно просто выполнить удаленный код, который может сломать / поставить под угрозу вашу систему. Вынуждая эти действия требовать root-доступа, вы, как пользователь, принимаете решение о том, будут ли эти действия выполнены или нет.
Это очень похоже на работу
UAC
с окнами, именно там у Windows появилась идеяUAC
.Цитата, которую вы получаете при первом использовании sudo, очень уместна и очень важна:
Особенно # 2, подумайте, прежде чем печатать. Это важная причина существования sudo: когда вы набираете команду и она откатывается назад, «для выполнения этого действия нужно быть пользователем root», она заставляет вас остановиться и подумать о том, что вы на самом деле делаете.
источник
Вы должны выполнять эти команды как суперпользователь, но вам не нужно выполнять их с помощью
sudo
. Вы можете, например, вместо этого использоватьsu
илиdoas
(замена OpenBSD дляsudo
), или вы можете просто войти как rootТаким образом, если они отображают свои команды здесь, то
sudo
они предполагают, что читатель просто использует свой любимый способ выполнения этих команд как суперпользователь.Это, безусловно, не означает, что они могут выполнять эти команды как обычный пользователь.
источник
sudo -i
или подобный, чтобы получить корневую оболочку, а затем начать запускать ваши корневые команды без необходимости предварять каждую из них сsudo
# vi /etc/hosts
вместо непривилегированного приглашения$ vi /etc/hosts
(Bash будет следовать соглашению, если вы используете\$
в немPS1
)Одной из функций безопасности, предлагаемой компанией,
sudo
является то, что вы можете иметь систему безroot
пароля , чтобыroot
пользователь не мог войти напрямую. Это обеспечивает дополнительную защиту для пользователей, которые выбирают слабые пароли - злоумышленник, пытающийся взломать пароль (через SSH или иным способом), должен будет сначала определить действительное имя пользователя.Другим аспектом является более детальное управление привилегиями. Подумайте о том,
make; sudo make install
чтобы делатьmake; make install
как root. Многие вещи могут пойти не так во времяmake
. Плохо настроенный инструмент может попытаться перезаписать важный системный файл, «очистить»/lib
вместо текущего каталога, использовать всю доступную оперативную память и повесить систему и т. Д.make install
- это небольшое простое действие с гораздо меньшей вероятностью фатальной ошибки.источник
Дело в том, что исторически система действительно предназначена для совместного использования несколькими пользователями, которые просто входят в систему, выполняют некоторые действия и затем выходят из системы. Таким образом, различие между администратором и обычным пользователем. Такие системы все еще существуют в университетских лабораториях, и вы можете ощутить разницу, если будете использовать такие компьютеры. Домашний ПК, где вы являетесь единственным пользователем, а также вынужден выступать в роли администратора, действительно намного позже.
источник
Компьютер - это инструмент. Давайте попробуем провести аналогию с другим инструментом, скажем, сковородой. Иногда вам нужно позаботиться о вашей сковороде. Например, вы должны очистить его с мылом для посуды. Вы бы сказали, что мыло для посуды является обязательным ингредиентом любого рецепта, для которого вы используете сковороду? Вы никогда не увидите «мыло для посуды» в качестве ингредиента в кулинарных книгах. Это необходимо, но подготовка инструмента - это другое дело, поэтому в кулинарных книгах это не упоминается. Сковорода должна быть очищена, но это не то, для чего она сделана.
Это то же самое для вашего компьютера. Он должен быть настроен и заботиться, но это не то, для чего он сделан. Вы заботитесь об этом, вы настраиваете его, чтобы он мог работать должным образом. После этого вы можете использовать его не как системный администратор, а как пользователь. Вот для чего это сделано. Когда вы пользователь, вам больше не нужен sudo . Просто используйте инструмент, который вы подготовили заранее. Конечно, время от времени вам нужно будет использовать привилегии суперпользователя, так же, как вы должны чистить сковороду так же часто, как вы используете ее для приготовления пищи.
Поэтому, не слишком преувеличивая, можно сказать, что вам никогда не понадобится sudo (или пароль root) для использования вашего компьютера. Только чтобы подготовить компьютер.
источник
sudo
или вы просто идете шеф-поваром и делаете этоsu
.Бьюсь об заклад, это потому, что вы используете программное обеспечение с графическим интерфейсом для всего, кроме задач системного администрирования, или вы говорите о серверах Linux, и в этом случае большая часть доступа будет, естественно, системного администрирования. Поэтому может показаться, что делать что-либо вообще в оболочке требуется
sudo
.Также возможно использовать оболочку для ваших повседневных задач. Управление вашими личными файлами
~
, редактирование файлов, общение в IRC, компиляция кода, просмотр веб-страниц - все это выполнимо в оболочке. Я даже использую вbc
качестве калькулятора. Некоторые вещи легче сделать с помощью графического интерфейса, некоторые вещи легче сделать с помощью оболочки - даже если вы предпочитаете использовать графический интерфейс, оболочка будет часто превосходить в пакетных операциях и автоматизации (например, сценарии оболочки). Лично я использую то, что лучше для поставленной задачи.В некоторых случаях рекомендуется настроить систему так, чтобы вам не приходилось
sudo
каждый раз использовать ее для операций, которые по умолчанию требуют root, но вряд ли вызовут проблемы. Одним из примеров является то, что я работаю с оборудованием, которое использует последовательные порты, и я установил правила udev, чтобы предоставить доступ к устройствам в качестве моего обычного пользователя без необходимости быть пользователем root.Я не думаю, что это хорошая идея для настройки,
sudo
чтобы не требовать пароль. Это позволяет слишком легко испортить всю систему с помощью одной опечатки или вредоносного скрипта.Если вам нужно выполнять задачи, которые постоянно требуют root, почему бы не оставить постоянную
sudo -s
корневую оболочку работающей в окне терминала? Тогда он будет доступен без необходимости ввода пароля, и его не так просто использовать случайно. Я даже настроил подсказку оболочки, чтобы она была ярко-красной, когда она находится в корневой оболочке.источник
Подразумеваемое прилагательное, связанное со всем этим, состоит в том, что они являются общесистемными или глобальными изменениями. Вы должны рассматривать происхождение Unix как многопользовательскую систему 1, где несколько пользователей будут использовать одну и ту же установку удаленно. Один непрофессионал не имеет смысла разрешать изменять глобальные настройки для всех пользователей. Это был системный администратор, корень, привилегия и ответственность.
В многопользовательской настройке у вас есть предустановленное программное обеспечение и его общесистемная конфигурация под
/usr
и/etc
соответственно. Прикосновение к этим местам потребует root-прав. Но поскольку программное обеспечение Unix написано для многопользовательских пользователей, вы можете скомпилировать и установить программное обеспечение в$HOME
каталоге 2 и иметь собственные файлы конфигурации в своем доме, где вы можете свободно редактировать файлы, не будучи суперпользователем.В дополнение к установке собственного программного обеспечения в домашних условиях, большинство системного программного обеспечения будет считывать пользовательскую конфигурацию
$HOME
сразу после первого чтения конфигурации из/etc
. Это позволяет настраивать практически все что угодно, даже не заходяroot
.На домашнем ПК в одной основной настройке пользователя вы можете использовать
sudo
и получать доступ к тем вещам, которые вам нравятся. Но обычно не трогать конфигурацию приложения,/etc
а вместо этого всегда предоставлять пользовательскую конфигурацию в домашних условиях. Таким образом, вы можете позволить вашему менеджеру пакетов сбросить общесистемные настройки при обновлении. Установка нового программного обеспечения в масштабе всей системы вполне подходит для однопользовательской настройки; Пакеты дистрибутивов не предполагают альтернативы, поэтому это простой выход.Я позволю своему менеджеру пакетов установить глобальные компоненты, но любые компоненты, скомпилированные из исходных текстов и самостоятельно созданные, я оставлю ниже
$HOME
. И мне не нужно судиться за все это.Если у вас есть файлы с данными, хранилище вне вашего
$HOME
, вы можете свободноchown
илиchgrp
каталоги на ваше имя, чтобы вы могли получить доступ к файлам безsudo
.[1] (немного иронично, так как Unix должен был быть «однопользовательской» версией операционной системы Multics)
[2] (если система позволяет это, не монтируя домашние разделы как noexec)
источник
В тех многопользовательских системах, для которых была разработана UNIX (и, по происхождению, Linux), это не обычные действия пользователя . Системный администратор может выполнять их, но не обычные пользователи, и поэтому система просит убедиться, что системный администратор действительно хочет это сделать.
Но даже в однопользовательских домашних системах это не обычные действия пользователя . Обычно это может понадобиться при первоначальной настройке системы, но как только она будет завершена, обычному пользователю не придется делать это очень часто . Большинство обычных пользователей просто работают с файлами внутри своего домашнего каталога (или его подкаталогов), используя программы / пакеты, которые уже установлены, и вам это не нужно
sudo
. Или они могут работать в специальном каталоге где-то еще в системе, который был выделен для этой цели, и вам нужноsudo
настроить это, но обычно вам нужно сделать это только один раз.Почему это имеет значение? Поскольку «однопользовательский» является неправильным: вы не единственный пользователь вашего компьютера, даже если вы могли бы быть его единственным человеком пользователя . Даже при обычной домашней установке Linux многие программы настроены на использование компьютера различными способами, зачастую имитируя то, что может сделать человек, если у него есть время и внимание: резервные копии, обновления, сканирование на наличие вредоносных программ и любить. В большинстве случаев такое использование совершенно безобидно, но даже для некоторых из них все же разумно убедиться, что пользователь действительно хочет это сделать. И когда эти случаи возникают, это то
sudo
, для чего. Компьютер просто регистрируется, чтобы убедиться, что вы действительно хотите сделать то, что кто-то (может быть, вы, может быть, программа) сказал, что вы сделали, И это даже не касается возможности вредоносных программ, которые вы, конечно, не хотите маскировать под себя.источник
Это, вероятно, не так часто, как представлено, но обычно происходит, когда что-то случайное внутренне требует гораздо более общего привилегированного системного вызова для достижения своего результата, например:
umount
это серьезная команда, так как вы можете размонтировать множество вещей с ее помощью.ifup
и т. Д.) Предназначена только для суперпользователя.Системы обычно развиваются, чтобы уменьшить количество таких случаев. USB-флешки теперь устанавливаются пользователем, а сети - подключаемыми. Но так было не всегда.
источник
Предположение: это ваша система и ваши данные.
Вам просто нужно взвесить риск случайного стирания данных или перегрузки вашей ОС в сравнении с простотой выполнения операций без необходимости
sudo
каждый раз печатать .Я обычно захожу в систему и работаю как root на моих домашних серверах, потому что
Я могулегче.Вам скажут, что вы можете запустить ядерное оружие, если вы не пойдете, хотя святой,
sudo
но реальность такова, что сегодня люди имеютroot
полномочия (*) на множество устройств (ваш телевизор, ваш телефон, ваш тостер, ваш Windows (как ты упомянул)). Linux здесь ничем не отличается, хотя многим нравится думать иначе.BTW
UAC
не был смоделирован после того,sudo
как его роль человека (помимо того, чтобы сделать вашу жизнь несчастной), чтобы убедиться, что вы увидите, когда вредоносные программы хотят делать что-то от вашего имени.(*)
root
полномочия определяются как способность уничтожать важные данные. Применяется поговорка «с великой силой возникают большие проблемы» (или что бы то ни было)Если мое предположение неверно, тогда вам все равно нужно взвесить вышеупомянутый риск, но есть и другие переменные (ваша работа, фотографии, сделанные вашим супругом и сохраненные на том же ноутбуке, ...)
источник
rm -rf ~/
без каких-либо специальных разрешений. С другой стороны, вы не можете заблокировать свой мобильный телефон или телевизор без предварительной рутирования.В защиту человека, который написал первоначальный вопрос, у меня был этот же вопрос в прошлые годы, но я выбрал другой подход.
Большинство ответов здесь можно просто воспроизвести в цикле, потому что все они подчеркивают одно и то же в отношении sudo и root. Позвольте мне добавить другую точку зрения к этой теме:
Я выучил Unix и Linux наизнанку, используя один из моих компьютеров как «морскую свинку». Я бы установил SCO Linux и, в конечном итоге, Solaris, а затем и Linux, гораздо позже, все время радостно экспериментируя как root, чтобы я мог читать и / или исследовать иерархию каталогов и все файлы с неограниченным доступом, а также создавать учетные записи «обычных пользователей» в моем доме. - выросла многопользовательская коробка, хотя я был единственным пользователем. И я рад, что сделал это таким образом. Я так много узнал о «философии Unix» и о том, как Unix должен был использоваться в моих экспериментах.
Я получил удовольствие, узнав о безопасности, а также выполнил опасные команды, набрав в терминале rm -rf / * в качестве пользователя root. (НЕ ДЕЛАЙТЕ ЭТОГО! В ЭТОЙ СИСТЕМЕ БУДЕТ !!) Я делал такие вещи и многие другие команды, просто чтобы посмотреть, что произойдет в режиме реального времени. Я делал подобные вещи заранее, зная последствия, но все же многому научился, делая это. Я использовал SCO Unix LONG еще до того, как появился Интернет (да, я такой старый!), И эксперименты таким образом были неоценимы для моего обучения.
Так что я хочу сказать, что если вы не возражаете против переустановки, когда что-то идет не так, используйте su или войдите в систему как root, как хотите, и настройте / взломайте! Таким образом, вы многому научитесь.
Просто помните, что совет, который много раз повторялся здесь, был повторен по уважительной причине: протоколы передового опыта развивались в течение десятилетий по мере развития compsec, и вы ДОЛЖНЫ обратить на них внимание, даже как домашний / одиночный пользователь вашей системы. , Таким образом, хорошая гигиена / привычки сисадмина станут для вас второй натурой.
Просто пища для размышлений на тему su и sudo. Удачного взлома!
источник