Как выйти из sudo su в ubuntu

Обновлено: 04.07.2024

В чем разница между двумя командами суперпользователя, su -s и sudo -s ?

Они оба дают оболочку с доступом к учетной записи суперпользователя.

На практике они оба сделают вас суперпользователем. Тем не менее, они делают немного разные вещи, немного по-другому.

Во-первых, su - переключает вас в оболочку входа, в то время как sudo -s - нет. На практике это часто означает, что ваши переменные среды не будут переключаться на root для sudo -s . Обратите внимание, что вы можете запустить просто su чтобы не получить оболочку входа, или sudo -i чтобы получить оболочку входа [не во всех версиях].

Во-вторых, su и su - переключитесь на нового пользователя, попросив вас пройти аутентификацию как новый пользователь. sudo -s и sudo -i (и просто обычный sudo foo ) позволяют вам запустить команду, для которой вы предварительно авторизованы [see /etc/sudoers ], возможно, попросив вас подтвердить свой текущий идентификатор.

Если вы хотите быть по-настоящему милым, вы также можете запустить sudo su - , который запросит вход в систему как root ( su - ), запускаемый пользователем root (часть sudo ).

Если пользователь root заблокирован (например, в Ubuntu), вы не сможете войти в систему как root с помощью su . В этом случае вам нужно использовать sudo -s или sudo -i

Переключится на пользователя (в данном случае root) и запустит указанную вами оболочку или один из нескольких других методов определения оболочки. Это полезно, если вы хотите очень быстро использовать zsh или другую оболочку от имени root . и по какой-то причине вы не используете sudo.

Просто запускает оболочку с помощью sudo, которая даст вам корневую оболочку. Вы также можете передать ему оболочку.

su -s старше, намного старше, чем команда sudo -s. Я предполагаю, что разработчик пытается максимально упростить переход на использование sudo.

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

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

Если вы предоставляете кому-то доступ к su (например, предоставляя ему пароль root), он может делать с ним все что угодно - запускать другие команды, открывать оболочку, менять пароль, удаленно входить через ssh и т.д. По сути, вы предоставляете им доступ к другой учетной записи, причем «su» - это только одна вещь, которую они могут сделать с ней.

Судо гораздо более мелкозернистый. Вы можете предоставить привилегии пользователю или группе. Вы можете разрешить пользователю или группе выполнять sudo в течение определенного периода времени (например, с понедельника по пятницу, с 9:00 до 17:00). Вы можете указать конкретный список команд, которые им разрешено запускать (например, только /usr /local /bin /run_backup), или вы можете указать конкретного пользователя, которому разрешено запускать команды (например, www, backup, staff и т.д.). ).

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

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

Вскоре я собираюсь сделать довольно много работы с PHP, и я заинтересован в изучении RoR, поэтому я установил Linux Mint 12 в своем VirtualBox.

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

Есть ли простой способ заставить linux предоставить мне беспрепятственный доступ к определенным каталогам, не открывая все их разрешения?

Многие дистрибутивы будут иметь группу, уполномоченную редактировать конфигурацию для различных системных утилит. Поместите себя в эту группу и откройте новую оболочку. Было бы лучше вместо этого указать корневой документ на что-то в моем домашнем каталоге? «Sudo» - одна из тех нелепых команд, которая слишком часто используется и злоупотребляется новыми пользователями Linux. Часто я вижу учебники в Интернете, где 15 команд подряд будут использовать sudo? В обычных ситуациях вам не нужны специальные разрешения при входе в систему как обычного пользователя (рекомендуется). Я был в компании, где все они использовали sudo. Когда я попытался запретить это (по соображениям безопасности), они пожаловались. Изучив загадочный файл конфигурации sudo, я обнаружил недостаток (как всегда), который позволил мне «рутировать» систему от этого обычного пользователя. Судо чрезвычайно опасен!

Мне на ум приходят два варианта:

Получите нужный каталог, используя chown :

(замените your_username на ваше имя пользователя и каталог на каталог, который вы хотите.)

Другая вещь, которую вы можете сделать, это работать с правами root, пока вы ЗНАЕТЕ, ЧТО ВЫ ДЕЛАЕТЕ . Для использования root сделайте:

и тогда вы можете делать что угодно, не вводя sudo перед каждой командой.

«Другая вещь, которую вы можете сделать, - это работать с правами root, пока вы ЗНАЕТЕ, ЧТО ВЫ ДЕЛАЕТЕ. Чтобы использовать root, делайте . » - ну, это отменяет лучшую практику, которую пытались обучить пользователи дистрибутивов и сообщества безопасности. По теме: «что такое принцип наименьших привилегий» .

Вообще говоря, всегда работайте как собственный пользователь, если вы не делаете что-то с общесистемным воздействием.

Если есть файлы, которые вы хотите разместить на своем веб-сервере, работайте как собственный пользователь, а затем используйте его, sudo чтобы поместить файлы на место в области веб-обслуживания вашей файловой системы. Обычно это выполняется сценарием установки, и вы запускаете что-то вроде sudo -u webmaster install-webserver-files или лучше sudo -u webmaster git update (или систему управления версиями по вашему выбору).

Если вы работаете на сервере разработки и хотите, чтобы ваши файлы были доступны мгновенно, создайте каталог в области веб-сервера и сделайте его владельцем или, по крайней мере, записываемым вами. После этой одноразовой операции ( sudo chown … или sudo -u webmaster setfacl … ) вам не понадобятся повышенные привилегии для повседневных операций.

Иногда удобно разрешить нескольким пользователям писать в каталоге или иным образом иметь разные разрешения для нескольких пользователей, кроме владельца, или для нескольких групп. Списки контроля доступа дают вам эту возможность. См. Проблемы с разрешениями для общего каталога на сервере или Проблема с разрешениями резервного копирования .

Да, войдите в систему как пользователь root, который даст вам контроль доступа суперпользователя
Та же концепция в Windows, вы можете войти в свой терминал с помощью администратора.

Я понимаю, что вы прямо отвечаете на вопрос автора оригинала. Но это плохой совет, который объясняет отрицательное голосование.

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

Чтобы увидеть решения и мои поиски альтернатив, я наткнулся на средства управления доступом на основе ресурсов, RBAC но в другой стране приключений Solaris с такими инструментами и pfexec т. Д. Этот подход более эффективен, потому что это позволит сохранить привилегии пользователей уже повышенными и будет доверять на совести и бдительности того, что сисадмины хотели бы сделать со своими привилегиями.

Рассматривая доступные решения RBAC и его реализации в мире Linux, я наткнулся на

Различные установки в масштабах сети могут не поддерживать этот подход (однако openrbac может рассматриваться как общий подход к реализации), так как sudoers является подходом с одним хостом или не способен к централизованной конфигурации в сети / домене. /etc/sudoers нужно синхронизировать каждый раз, когда есть изменения. Более того, при работе с файлом sudoers существует требование к базе знаний, необходимо понимать язык политики конфигурации sudoers, чтобы не допускать ошибок и разрешать любые предоставления. RBAC может предлагать централизованный подход до некоторой степени, в то время как профили безопасности могут быть общими, добавление / удаление пользователя из предоставленной роли может быть сделано из одного места (это место, где хранится информация о пользователе / ​​passwd / group для домен как LDAP, NIS или AD). Это также косвенно потребует понимания команд, необходимых для работы с базой данных RBAC, таких как smexec, smmultiuser, а их немного.

Sudo может предложить более кросс-платформенный подход, тем не менее, он работает на всех Unix / подобных платформах, которые предлагают функции setuid. И то, sudo и другое RBAC успешно дает некорневым пользователям некоторые привилегии, которые могут быть сделаны без предоставления самого root пароля. Sudo может дать более тонкий / детальный подход к аргументам командной строки, которые можно использовать при выполнении команд, и ограничить только тем, какую команду с аргументами можно запускать с повышенными привилегиями. Хотя RBAC может ограничить использование до установленных команд или двоичных файлов, но не может контролировать аргументы командной строки. Аудит намного лучше и встроен в среду RBAC, тогда как sudo Это зависит от конфигурации, а также от принятых ограничений безопасности (например, отсутствие предоставления оболочки и, в частности, хостам разрешается входить в систему с другими хостами без каких-либо проблем). Это лишь некоторые из различий, на которые я мог бы сослаться, и я лично склонен использовать sudo, а не RBAC, хотя с указанными ограничениями я мог бы преодолеть некоторые обходные пути. До тех пор пока все проблемы не будут решены RBAC для лучшего преимущества sudo, я не думаю, что sudo исчезнет, ​​потому что это просто.

I'm using sudo su to start mysql and do some homework with it.

When I finish with mysql (or any other command), then I'm still in sudo .


80.9k 25 25 gold badges 186 186 silver badges 205 205 bronze badges 2,001 8 8 gold badges 27 27 silver badges 33 33 bronze badges exit or a simple Ctrl+D. I remember when I first discovered the latter and my life got ten times simpler :-D . Apart from the good answers below there remains one point: if you need a shell with root permissions on Ubuntu you type sudo -i (and leave it with CTRL+D)

5 Answers 5

You don't need to use sudo and su together-- su switches your user account (without arguments it switches you to root). sudo just elevates your privileges to root for the current command.

It's reccomended to use sudo instead of su if possible, but to return to your normal account after calling su , simply use the exit command

1,514 1 1 gold badge 9 9 silver badges 3 3 bronze badges @Rob but still it may not set the environment in a desired way - use sudo -i instead (in Ubuntu the root account is disabled by default = there exists no valid password)

to get back to your user level (or a different user)

Or just press Ctrl + D to exit out of root

  • logout if used sudo su -
  • exit if used sudo -s
917 2 2 gold badges 12 12 silver badges 20 20 bronze badges

if your stuck after using sudo su as root: to exit use this command


There isn't any reason to use sudo or su to run the MySQL command-line client. It defaults to using your current Unix user as your MySQL user, but instead you should pass it the user you want to connect to as arguments:

Hopefully, your MySQL root account has a password, and you'll need to use the second form.

Other than that, if you need to run MySQL under sudo (e.g., for file permissions) then do it like this:

You can leave out the arguments (sudo will default to user root, MySQL will default to using the same user as sudo).

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

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

Команда su Linux

Команда имеет следующий синтаксис:

su [options] [-] [user]

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

  • options — некоторые дополнительные возможности команды. Мы их рассмотрим ниже:
  • [-] — смена контекста выполнения оболочки на контекст указанного пользователя. Переменные $PATH, $HOME, $SHELL, $USER, $LOGNAME содержат значения, характерные для указанного пользователя. Домашняя папка пользователя меняется на другую.
  • user — имя пользователя, под которым продолжит работать командная оболочка.

Основные опции команды su:

  • -c, --command=command — запускает приложение под указанным аккаунтом;
  • -s, --shell=shell— происходит запуск для заданного пользователя указанной оболочки;
  • -, -l, --login — смена контекста выполнения на контекст заданного пользователя, аналогична смене пользователя системы для shell;
  • -g, --group=group — вызов пользователя, состоящего в заданной группе. Используется только для пользователя root;
  • -h, --help — вызов справки для команды.

Далее давайте рассмотрим примеры работы с утилитой su.

Примеры использования su

Смена пользователя на суперпользователя root, без смены окружения оболочки:


Обратите внимание, что здесь вам нужно набрать пароль не своего пользователя, а именно того, от имени которого вы хотите авторизоваться. В данном случае, пользователя root. Если вы получаете ошибку сбой при проверке подлинности su linux, то это может означать, что либо вы ввели пароль неверно, либо пароль для этого пользователя не задан. Такое можно встретить у пользователя root в Ubuntu и Linux Mint. Информацию о том как установить пароль вы можете найти в этой статье. Смена пользователя на суперпользователя root со сменой параметров окружения оболочки:


Смена пользователя на пользователя user01:


Смена пользователя на пользователя user01 со сменой окружения:


Запуск оболочки zsh для пользователя user01:

su -s /usr/bin/zsh user01


Запуск оболочки bash из оболочки zsh для пользователя user01:

su -s /usr/bin/bash user01


Запуск файлового менеджера Midnight Commander для пользователя user01:



Просмотр содержимого директории boot суперпользователем root:


Чтобы выйти из оболочки, открытой командой su можно использовать встроенную команду exit или сочетание клавиш Ctrl+d.


Выводы

Сегодня вы узнали что из себя представляет команда su linux, которая позволяет запустить оболочку от имени другого пользователя, как со сменой окружения, так и без. Узнали как выйти из этой оболочки.

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

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Читайте также: