Вы администратор, но нет root
. root
Пользователь может сделать что - нибудь. Администраторы могут выполнять действия какroot
, но обычно то, что делают администраторы, не выполняется root
. Таким образом, вы имеете полный контроль над своей системой, но только тогда, когда вы решите ее использовать.
Ubuntu запрашивает ваш пароль, когда вы пытаетесь что-то сделать root
, чтобы убедиться, что это действительно вы.
Аккаунты пользователей: человек и другие
Реальные люди имеют учетные записи пользователей, чтобы представлять их. Вы создали одну такую учетную запись, когда вы установили Ubuntu. Но не все учетные записи пользователей представляют реальных людей .
Настоящим пользователям предоставляются (и запрещаются) возможности через их учетные записи. Они должны использовать свои учетные записи пользователей, чтобы использовать систему; следовательно, к ним относятся возможности и ограничения их учетных записей.
Учетные записи пользователей также используются для кодирования наборов способностей и ограничений. Некоторые учетные записи пользователей - большинство, на самом деле, если у вас не много пользователей этой машины - существуют, так что определенные программы или команды могут запускаться с их личностью, идентичностью с правильными способностями и ограничениями для работы.
Например, www-data
пользователь существует так, что если вы запускаете веб-сервер, он владеет данными, которые сервер делает доступными. Ни один реальный пользователь не должен иметь возможности вносить неконтролируемые изменения в эти данные, а веб-сервер не должен быть уполномочен выполнять какие-либо действия, необязательные для обслуживания сети. Следовательно, и веб-данные, и остальная часть системы более защищены от случайного или преднамеренного взлома, чем если бы веб-сервером управлял какой-то пользователь-человек, который имел бы все полномочия веб-сервера (и чьи полномочия веб-сервер мог бы обладают).
Самая важная не человеческая учетная запись пользователя
Суперпользователя , чье имя пользователя является root
, это учетная запись пользователя , не являющегося человеком с очень специфической комбинацией способностей и ограничений: все способности, и без каких - либо ограничений .
root
«ы позволили сделать что - нибудь. Есть вещи, root
которые не могут сделать, потому что сама система не может выполнять или иметь смысл из них. Поэтому root
нельзя убить процесс, который находится в непрерывном сне , или сделать камень слишком тяжелым для перемещения, а затем переместить его .
Многие важные системные процессы, такие как init
, запускаются как root
и root
используются для выполнения административных задач.
Могу ли я войти как root
?
Можно настроить root
учетную запись, чтобы можно было войти в систему с паролем, но это не включено по умолчанию в Ubuntu. Вместо этого, вы можете думать root
как , как www-data
, lp
, nobody
и другие счета , не являющиеся людьми. (Беги cat /etc/passwd
или getent passwd
увидишь их всех.)
Пользователи-пользователи входят в систему со своими собственными учетными записями, а затем, если какая-то задача должна выполняться с другой учетной записью пользователя, они вызывают выполнение этой задачи с этим удостоверением , фактически не выполнив вход в качестве этого пользователя.
Можно настроить других пользователей, не являющихся людьми, например www-data
, так что вы также можете войти как они. Это довольно редко, хотя, в то время как в некоторых других Unix-подобных ОС вход в систему осуществляется как root
в терминале . Риски запуска всего графического интерфейса в root
сочетании с тем, что многие графические программы не предназначены для работы root
и могут работать некорректно, означают, что вы никогда не должны пытаться получить сеанс рабочего стола с собственным root
именем .
Пожалуйста , обратите внимание , что в то время как регистрация в качестве root
отключена по умолчанию в Ubuntu, есть способы , чтобы получить root
оболочку без аутентификации , как root
, которые производят такой же эффект: наиболее распространенными являются sudo -s
или-i
, режим восстановления и подобные методы . (Не беспокойтесь, если вы не знаете, что это такое.) На самом деле это не вход в систему: в режиме восстановления вы становитесь, root
прежде чем произойдет любой вход в систему; с помощью sudo
методов -base вы просто запускаете оболочку от имени пользователя root.
Администраторы
В Ubuntu администраторы - это пользователи, которые могут делать все, что захотят root
, когда захотят .
Системные настройки> Учетные записи пользователей. «Элия Каган» - администратор, поэтому он может делать что угодно root
, но это не такroot
.
Я администратор в моей системе Ubuntu. Когда я запускаю программы, обычно они запускаются как ek
(«Eliah Kagan» - это полное имя, соответствующее имени ek
пользователя.)
Когда я запускаю AbiWord или LibreOffice, он запускается как ek
. Когда я запускаю Firefox, Chromium, Empathy или Pidgin, он запускается как ek
. Программы, которые запускаются для обеспечения интерфейса рабочего стола, запускаются как ek
.
Однако я администратор, поэтому, если мне нужно выполнить административную задачу, я могу это сделать.
Судо
В командной строке я обычно использовал sudo
бы команду как root
:
sudo command...
Это предложит мне мой пароль. (Не root
пароль; root
не имеет пароля .)
- Поскольку я администратор, я могу выполнять действия как
root
. В конфигурации по умолчанию я должен ввести свой пароль, чтобы сделать это.
- Пользователи, которые не являются администраторами, не могут выполнять какие-либо действия
root
, даже введя свой пароль. sudo
Команды не будут выполнены, если пользователь, выполняющий их, не является администратором.
Поскольку администраторы являются совершенно обычными пользователями, за исключением возможности выполнять действия как root
, выполнение команды, требующей root
привилегий, все равно будет неудачным, за исключением случаев, когда команда запускается какroot
.
Снимок экрана, иллюстрирующий необходимость использования sudo
для выполнения административных задач. ( На основе «сэндвич» по Randall Мунро .)
sudo, графически
Графические программы могут работать как root
через графические интерфейсыsudo
, такие как gksu
/gksudo
и kdesudo
. Например, чтобы запустить GParted, как root
я мог запустить gksudo gparted
. Тогда мне будет предложено графически для моего пароля.
Так как мне подсказывают графически, не должно быть терминала. Это один из способов запуска инструментов администрирования root
.
Polkit
Polkit (когда-то известный как PolicyKit) - это еще один способ для администраторов сделать что-либо root
. Программа обращается к службе, которая выполняет действие. Иногда действие запускает целую программу; иногда действие более ограничено.
В наши дни многие графические утилиты системного администрирования настроены на использование polkit по умолчанию, а не на использование sudo
.
Одним из примеров такой утилиты является Центр программного обеспечения. Он использует все преимущества polkit, требуя, чтобы пользователь вводил свой пароль только тогда, когда он хочет сделать что-то, что требует root
привилегий. (Это возможно и с sudo
аутентификацией на основе, но сделать это сложнее и сложнее.)
В Центре программного обеспечения я могу найти и прочитать о приложении; затем меня спрашивают пароль, когда я хочу его установить.
Чем отличается полькит
Любая графическая программа может быть запущена как root
с gksudo
другими графическими sudo
интерфейсами. (Программа может работать не очень хорошо, в зависимости от того, предназначена она для использования или нет root
. Но команда для запуска программы будет выполнена как root
.)
В то время как polkit теперь более распространен, чем sudo
интерфейс GUI, поскольку приложения в Ubuntu выполняют действия как root
закулисные, polki будет запускать только графическое приложение, как root
если бы был файл конфигурации, позволяющий это сделать и указывающий, какие действия могут быть выполнены .
Polkit, неграфически
pkexec
это команда, используемая для запуска программы с помощью polkit.
Мол sudo
, pkexec
может запускать неграфические команды. (И для этого не требуется файл конфигурации, определяющий возможности команды - он просто запускает команду как root
.)
pkexec command...
pkexec
запрашивает пароль графически, даже если он запускается из Терминала (это один из способов, которым его поведение больше похоже gksudo
на прямой запуск sudo
).
(Если графический интерфейс отсутствует - например, если вы вошли в систему с виртуальной консоли или только текстового сеанса SSH , или графический интерфейс не функционирует должным образом - то pkexec
будет изящно ухудшаться и запрашивать пароль в командной строке .)
Как только аутентификация выполнена успешно, команда выполняется в терминале.
Запуск команд как другие пользователи кроме root
root
особенный, потому что он делает все, что может быть сделано. Но это учетная запись пользователя , как и любой учетной записи, а также способы выполнения команд , как root
с sudo
(непосредственно или с помощью графического интерфейса) или polkit может быть немного изменен , чтобы выполнить команду , как и любой другой пользователь:
sudo -u username command...
gksudo -u username command...
pkexec --user username command...
Какая? Вы просто печатаете sudo
первым? Как это безопасность?
Выполнение команд с помощью sudo
своего рода напоминает непогрешимость папы .
Когда вы запускаете команду сsudo
[вызывать непогрешимость папы] , Ubuntu [католики] изо всех сил старается убедиться, что вы действительно [на самом деле папа].
Да, я знаю, что непогрешимость папы (даже если она нормативная) носит декларативный характер; параллель не идеальна.
Попытка сделать что-то, как root
с sudo
(или polkit), является большой проблемой - Ubuntu не просто пропустит этот процесс, как все другие случаи, когда вы запускаете программу.
Вам будет предложено ввести пароль. (Затем то, что вы сделали, запоминается на короткое время, поэтому вам не нужно постоянно вводить пароль при администрировании системы.)
Помимо напоминания о необходимости быть осторожным , это защищает от двух сценариев:
- Кто-то использует ваш компьютер (или мобильное устройство), возможно, под видом проверки своей электронной почты или какой-то подобной безобидной цели. Здесь они все еще могут причинить вред - например, они могут изменить или удалить ваши документы. Однако они не могут администрировать систему, поскольку не могут ввести ваш пароль.
- Программы, которые не должны администрировать систему, не смогут этого сделать, если вы не введете свой пароль. Например, если ваш веб-браузер скомпрометирован ошибкой в системе безопасности и выполняет вредоносный код, он по-прежнему не может выполнять административные задачи. Он не может создавать и удалять пользователей, изменять программы, установленные как
root
(что включает в себя все, что установлено менеджером пакетов, например LibreOffice), или изменять систему на глубоком уровне.
Я слышал о su
. Что это такое? Могу ли я использовать это?
su
аутентифицируется как другой пользователь и запускает команду (или запускает интерактивную оболочку). Можно ограничить круг лиц, которым разрешено использовать su
, но su
аутентификация выполняется с использованием пароля целевой учетной записи, а не пароля пользователя, который работает.
Например, работает как имя пользователя , так же, как .su username -c 'command...'
command...
sudo -u username command...
Но когда вы запускаете команду как username
с sudo
, вы вводите свой пароль . Когда вы запускаете команду как username
с su
, вы вводите username
пароль .
Так как su
выполняет аутентификацию для целевого пользователя , su
вы можете запускать команды только в качестве пользователей, чьи учетные записи включены .
root
Счет (как www-data
и nobody
) по умолчанию отключена. Там нет пароля, который будет работать, чтобы войти как root
. Таким образом, вы не можете использовать su
для запуска команд как root
.
Вы можете использовать su
для запуска команд в качестве другого пользователя, который может войти (который обычно включает в себя все учетные записи пользователей в вашей системе, которые представляют людей).
Когда вы вошли как гость, вы не можете использовать su
вообще.
Сочетание su
иsudo
Кто-то, кто не является администратором, может даже su
работать sudo
как администратор. (Это нормально , хотя, как они нуждаются пароль администратора для запуска команды в качестве администратора.) То есть, ограниченный пользователь может использовать su
для запуска , sudo
чтобы запустить команду как root
. Это может выглядеть так:
su username -c 'sudo command...'
(Запуск графических программ таким образом требует особого внимания .)
Не su
будет ли более безопасный способ запуска команд как root
?
Возможно нет.
Что делать, если пользователю нельзя позволять действовать root
?
Сделайте их ограниченным пользователем вместо администратора.
Что делать, если программа, выполняемая от имени администратора, пытается это sudo
сделать root
?
Если вы не перенастроили sudo
его на успешное выполнение без пароля, произойдет сбой.
Разве не может быть запущена программа, которая не должна запускаться как root
недавняя sudo
команда, поэтому пароль не требуется?
Это вряд ли получится. В настоящее время большинство операционных систем (включая Ubuntu) sudo
настроены по умолчанию так, что их временные метки применяются только в определенном контексте.
Например, если я запустился sudo ...
на одной вкладке «Терминал» и успешно sudo
прошел аутентификацию, на другой вкладке (или запущенной не связанной программой с графическим интерфейсом, или запущенной с виртуальной консоли или сеанса SSH) все равно будет запрашиваться пароль. Даже если он запускается сразу после этого.
Разве программа, работающая как пользователь X, не имеет доступа к паролю пользователя X?
Нет.
Если вредоносная программа может запускаться от имени администратора, не может ли она «прослушать» то, что вводится, когда администратор проходит проверку подлинности с помощью sudo
или с помощью polkit?
Потенциально да. Но тогда он мог «прослушать» пароль, введенный для su
.
Если я скажу кому-то свой пароль
Не говорите людям свой пароль.
Что если кто-то должен знать мой пароль, чтобы что-то сделать от моего имени, но я не хочу позволять им администрировать систему?
В идеале у них должна быть отдельная учетная запись, которая позволяет им делать то, что им нужно. Например, может обмениваться файлами между учетными записями, позволяя нескольким пользователям писать в них, при этом отказывая в доступе другим пользователям.
Однако в ситуации, когда менее доверенному лицу может быть разрешено использовать вашу учетную запись, она должна быть ограниченной учетной записью пользователя. Вы можете создать для этого отдельную учетную запись (что имеет смысл - если это учетная запись для вас и кого-то еще, кому вы хотите иметь разные возможности, это должна быть другая учетная запись).
Итак, самая безопасная вещь - запретить sudo
и то, su
и заставить людей входить в систему как root
вручную?
Нет, потому что есть серьезные недостатки, связанные с тем, что люди могут входить в систему root
вообще. По возможности, должно быть предпринято как можно меньше действий root
. Даже большинство действий, связанных непосредственно с администрированием системы (например, просмотр настроек пользователей и чтение журналов), обычно не требуют root
привилегий.
Кроме того, точно так же, как потенциально вредоносная программа может наблюдать за тем, что кто-то печатает при запуске, sudo
или su
, или создавать запрос на ввод в заблуждение sudo
/ su
пароль, потенциально вредоносная программа может также создавать поддельный экран входа в систему.
Что делает пользователя администратором?
Членство в группах.
В Ubuntu 12.04 и более поздних версиях администраторы являются членами вызываемой группы sudo
.
В Ubuntu 11.10 и более ранних версиях администраторы являются членами вызываемой группы admin
.
Когда система Ubuntu до 12.04 обновляется до 12.04 или более поздней, admin
группа сохраняется для обратной совместимости (и продолжает предоставлять административные полномочия пользователям в ней), но sudo
группа также используется.
Ограниченные учетные записи пользователей
Могу ли я использовать учетную запись с ограниченными правами вместо учетной записи администратора?
Если вам нравится, конечно. Создайте ограниченную учетную запись пользователя в « Системные настройки» > « Учетные записи пользователей» и войдите в систему как этот пользователь.
Могу ли я сделать свою учетную запись администратора ограниченной учетной записью пользователя?
Да, просто удалите его из sudo
и admin
групп (см . Выше)
Но вы должны убедиться, что есть хотя бы одна другая учетная запись администратора, чтобы вы могли администрировать свою систему. Если его нет, вам придется загрузиться в режиме восстановления или на live CD и снова сделать какого-то пользователя администратором . (Это похоже на сброс утерянного пароля администратора .)
Графические инструменты для администрирования пользователей и групп обычно удерживают вас от создания системы без администраторов или, по крайней мере, предупреждают вас. Инструменты командной строки обычно не будут (полагая, что вы знаете, что делаете).