В чем разница между командами «su -s» и «sudo -s»?

Разблокировка учетной записи root

Ubuntu (и несколько других дистрибутивов) блокирует учетную запись root, чтобы обычный пользователь не мог получить к ней доступ. Разблокировка учетной записи root позволит вам войти в систему как root.

Откройте терминал

Вводим «sudo passwd root».

При запросе пароля введите ваш пароль пользователя

Установите новый пароль.

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

Снова заблокируйте учетную запись root.

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

«sudo passwd -dl root»

Графические версии Су

Linux также поддерживает графические версии su, которые запрашивают ваш пароль в графической среде. Например, вы можете запустить следующую команду, чтобы получить графическую подсказку пароля и запустить браузер файлов Nautilus с правами root. Нажмите Alt-F2, чтобы запустить команду из графического диалога запуска без запуска терминала.

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

Gksu использует бэкэнд на основе su или sudo, в зависимости от используемого дистрибутива Linux.

Теперь вы должны быть готовы встретить su и sudo! Вы столкнетесь с обоими, если будете использовать разные дистрибутивы Linux.

su и sudo в разных дистрибутивах Linux

su — это традиционный (более старый) способ переключения на учетную запись root (и получение повышенных прав) в Linux.

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

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

С другой стороны, другие дистрибутивы Linux, такие как , при установке создают обе учетные записи: обычного пользователя и суперпользователя (root).

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

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

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

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

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

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

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

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

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

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

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

Команда sudo

Команда sudo (от англ. «Substitute User and do« — «подменить пользователя и выполнить») используется в качестве префикса к командам Linux, позволяя вошедшему в систему пользователю выполнять команды, требующие привилегий root. В отличие от su, команда sudo требует ввода пароля текущего пользователя (выполняющего эту команду).

Например, все исполняемые и административные задачи требуют наличия максимальных разрешений (root). В таких случаях рекомендуется использовать sudo:

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

Добавление пользователя в группу sudoers

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

Например, чтобы добавить в группу sudoers учетную запись ravesli, вы должны ввести:

Чтобы просмотреть список учетных записей, принадлежащих группе sudoers, выполните:

Вывод отобразит учетную запись, добавленную на предыдущем шаге:

Еще один способ добавления пользователя в группу sudoers — это воспользоваться командой visudo, которая помогает отредактировать файл /etc/sudoers. Для этого выполните вход в учетную запись root (команда ), после чего вызовите и добавьте в файл следующую строку, заменив на нужное вам имя пользователя, которому вы хотите дать доступ к sudo:

Нажмите Ctrl+X, а затем Y, чтобы сохранить файл. Вы также можете добавить пользователя в группу, указанную в файле /etc/sudoers. Пользователи групп, указанных в данном файле, автоматически получат привилегии sudo.

Права суперпользователя в Linux

Очень долго перечислять чего не может обычный пользователь Linux, проще сказать на что у него есть право, а именно при стандартной настройке полномочий для файлов в Linux, обычный пользователь может:

  • Читать, писать и изменять атрибуты файлов в своем каталоге
  • Читать, писать, изменять атрибуты файлов в каталоге /tmp
  • Выполнять программы там, где это не запрещено с помощью флага noexec
  • Читать файлы, для которых установлен флаг чтения для всех пользователей.

Если же нужно сделать что-то большее нам понадобятся права root пользователя linux. У root есть право делать все в вашей файловой системе независимо от того какие права установлены на файл.

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

1. Запуск программы

Самый частый пример использования sudo — выполнение программы от имени суперпользователя. Для этого достаточно написать sudo перед именем программы:

Если вы хотите выполнить программу не от имени root, а от имени другого пользователя, то можно использовать опцию -u, например:

2. Переменные окружения

По умолчанию, команда sudo не передаёт запускаемой утилите переменные окружения текущего пользователя. А когда вы запускаете графическое приложение, то ему нужна переменная DISPLAY для доступа к графическому серверу. В последних версиях Ubuntu всё немного по другому, но все же эта возможность sudo актуальна. Чтобы передать переменные просто используйте опцию -E:

Без опции -E программа получает только 18 стандартных переменных, а с опцией — все доступные.

Также вы можете указать список переменных, которые нужно передать:

3. Авторизация от имени другого пользователя

С помощью sudo вы также можете авторизоваться от имени другого пользователя. Для этого используйте опцию -i:

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

4. Командный интерпретатор

Если у вас в системе установлено несколько командных интерпретаторов, например, не только bash, но и zsh, то вы можете авторизоваться от имени другого пользователя и указать, какую именно оболочку вы хотите использовать. Для этого укажите опция -s:

5. Редактирование файлов

Когда вам необходимо отредактировать системный файл, вы пишите sudo vim или sudo nano. Вместо этого можно использовать опцию -e или команду sudoedit. Она открывает файл для редактирования, редактором, установленным в системе по умолчанию. Например, у меня это vim. Чтобы отредактировать /etc/group с правами суперпользователя достаточно выполнить:

Или:

Утилита узнает, каким редактором нужно пользоваться из переменной окружения EDITOR.

6. Запуск в фоне

Чтобы запустить программу в фоне с помощью sudo можно использовать опцию -b. Например, запускаем OpenVPN в фоновом режиме:

7. Просмотр полномочий

Вам необязательно редактировать конфигурационный файл, чтобы понять, какие настройки для sudo разрешены, а какие нет. Для этого можно выполнить команду с опцией -l. Утилита выведет список разрешённых команд или ALL в случае, если разрешено всё:

Как использовать sudo

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

sudo OPTION.. COMMAND

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

Чтобы использовать sudo, просто добавьте к команде префикс sudo:

sudo command

Где command – команда, для которой вы хотите использовать sudo.

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

Например, чтобы перечислить все файлы в каталоге /root, вы бы использовали:

sudo ls /root
 password for andreyex:
.  ..  .bashrc	.cache	.config  .local  .profile

Microsoft Windows [ править ]

В Windows NT и более поздних системах , полученных из него (например, Windows 2000 , Windows XP , Windows Server 2003 и Windows Vista / +7 / 8 / +10 ), должно быть , по крайней мере одной учетной записи администратора (Windows XP и выше) или Умеют для повышения привилегий до суперпользователя (Windows Vista / 7/8/10 через Контроль учетных записей ). В Windows XP и более ранних системах есть встроенная учетная запись администратора, которая остается скрытой, если существует учетная запись пользователя, эквивалентная администратору. Эта встроенная учетная запись администратора создается с пустым паролем. Это создает риски для безопасности, поскольку локальные пользователи смогут получить доступ к компьютеру через встроенную учетную запись администратора, если оставить пароль пустым, поэтому учетная запись отключена по умолчанию в Windows Vista и более поздних версиях из-за введения контроля учетных записей пользователей ( ОАК). Удаленные пользователи не могут получить доступ к встроенной учетной записи администратора.

Учетная запись администратора Windows не является точным аналогом учетной записи root Unix — администратор, встроенная учетная запись администратора и учетная запись администратора пользователя имеют одинаковый уровень привилегий. Учетная запись пользователя по умолчанию, созданная в системах Windows, является учетной записью администратора. В отличие от учетных записей администраторов macOS, Linux и Windows Vista / 7/8/10, учетные записи администраторов в системах Windows без UAC не изолируют систему от большинства ловушек полного корневого доступа. Одна из этих ловушек — снижение устойчивости к заражению вредоносным ПО. Чтобы избежать этого и поддерживать оптимальную безопасность системы в системах Windows до UAC, рекомендуется при необходимости просто пройти аутентификацию из стандартной учетной записи пользователя, либо с помощью пароля, установленного для встроенной учетной записи администратора, либо с помощью другой учетной записи администратора.

В учетных записях администратора Windows Vista / 7/8/10 появится запрос для проверки подлинности выполнения процесса с повышенными привилегиями. Обычно учетные данные пользователя не требуются для аутентификации приглашения UAC в учетных записях администратора, но для аутентификации приглашения UAC требуется ввести имя пользователя и пароль администратора в стандартных учетных записях пользователей. В учетных записях администратора Windows XP (и более ранних версий) аутентификация не требуется для запуска процесса с повышенными привилегиями, и это создает еще одну угрозу безопасности, которая привела к разработке UAC. Пользователи могут настроить процесс для запуска с повышенными привилегиями из стандартных учетных записей, установив для процесса «запуск от имени администратора» или используя команду «runas» и аутентифицируя приглашение с учетными данными (имя пользователя и пароль) учетной записи администратора.Большая часть преимуществ аутентификации из стандартной учетной записи сводится на нет, если используемые учетные данные администратора имеют пустой пароль (как во встроенной учетной записи администратора в Windows XP и более ранних системах), поэтому рекомендуется установить пароль для встроенная учетная запись администратора.

В Windows NT , 2000 и более поздних версиях пользователем root является учетная запись администратора.

Настройка sudo в Linux

Все настройки sudo находятся в файле /etc/sudoers. Здесь можно настроить очень много параметров, начиная от кому будет позволено выполнять команды от имени суперпользователя и заканчивая ограничением набора доступных команд.

Чтобы открыть файл для редактирования наберите такую команду от имени суперпользователя:

Вы также можете указать текстовый редактор, в котором вы хотите редактировать файл настройки:

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

тип имя_алиаса = элемент1, элемент2, элемент3

Тип указывает какого типа нужно создать алис, имя — имя, которое будет использовано, а список элементов — те элементы, которые будут подразумеваться при обращении к этому имени.

Описание разрешений для пользователей имеет немного другой синтаксис:

пользователь хост  = (другой_пользователь:группа) команды

Пользователь указывает пользователя или группу, для которых мы создаем правило, хост — компьютер, для которого будет действовать это правило. Другой пользователь — под видом какого пользователя первый может выполнять команды, и последнее — разрешенные команды. Вместо любого из параметров может использоваться алиас. А теперь настройка sudo в Debian и других дистрибутивах.

Права суперпользователя в Linux

Очень долго перечислять чего не может обычный пользователь Linux, проще сказать на что у него есть право, а именно при стандартной настройке полномочий для файлов в Linux, обычный пользователь может:

  • Читать, писать и изменять атрибуты файлов в своем каталоге
  • Читать, писать, изменять атрибуты файлов в каталоге /tmp
  • Выполнять программы там, где это не запрещено с помощью флага noexec
  • Читать файлы, для которых установлен флаг чтения для всех пользователей.

Если же нужно сделать что-то большее нам понадобятся права root пользователя linux. У root есть право делать все в вашей файловой системе независимо от того какие права установлены на файл.

Су против Судо

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

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

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

Это ключевое различие между su и sudo. Su переключает вас на учетную запись пользователя root и требует пароль учетной записи root. Sudo запускает одну команду с привилегиями root — он не переключается на пользователя root и не требует отдельного пароля пользователя root.

Повышение пользовательских прав командой su

Давайте рассмотрим такую ситуацию, когда пользователю нужно установить некую программу, например wget.

$ yum install -y wget
Загружены модули: fastestmirror
Для выполнения этой команды необходимы привилегии суперпользователя.

Все, приехали, для выполнения этой команды нужны привилегии суперпользователя. Что делать дальше? Далее можно воспользоваться так называемым повышением пользовательских прав. Для подобных целей существует команда su.

$ su
Пароль: 
# 

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

Было $, стало #. Теперь можно установить нужную программу или выполнить необходимую операцию, ради которой все это и было затеяно. Для возвращения назад используют команду exit.

# exit
exit
$ 

После выполнения команды exit происходит возвращение в свое пользовательское окружение $.

Существует еще один вариант выполнения команды — su -. При выполнении su — изменяется не только имя, но и рабочее окружение пользователя.

$ su -
Пароль: 
Последний вход в систему:Сб фев 11 21:11:06 MSK 2017на pts/0
# 

Были $, стали #. Грубо говоря стали пользователем root, до тех пор пока не будет выполнена команда exit и пользователь не вернется назад в свое окружение.

У некоторых читателей может появиться вопрос: Зачем это нужно, если обычный пользователь зная пароль root может входить напрямую, без всяких заморочек? Да может, зная пароль это не составит особого труда. Я описываю ситуацию когда root и обычный пользователь, это один и тот-же человек.

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

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

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

Подобную манипуляцию пользователями можно провернуть и в современных версиях Linux. Допустим что у нас есть два пользователя techlist_1 и techlist_2, по умолчанию не относящиеся к группе wheel.

# id techlist_1
uid=1001(techlist_1) gid=1004(techlist_1) группы=1004(techlist_1)
# id techlist_2
uid=1002(techlist_2) gid=1005(techlist_2) группы=1005(techlist_2)

Добавим пользователя techlist_1 в группу wheel, а techlist_2 оставим без изменений.

# usermod -a -G wheel techlist_1
# id techlist_1
uid=1001(techlist_1) gid=1004(techlist_1) группы=1004(techlist_1),10(wheel)
# id techlist_2
uid=1002(techlist_2) gid=1005(techlist_2) группы=1005(techlist_2)

Отредактируем файл /etc/pam.d/su для возвращения возможности разделения пользователей, как в старых версиях Linux.

# nano /etc/pam.d/su

Находим следующую строку и расскомментируем ее, уберем знак #, в начале строки:
#auth           required        pam_wheel.so use_uid
auth           required        pam_wheel.so use_uid

Сохраняем изменения и выходим.

Проверим как теперь пользователи смогут выполнять команду su. Сначала проверим входящего в группу wheel пользователя.

$ su
Пароль: 
# exit
exit
$ su -
Пароль: 
Последний вход в систему:Вс фев 12 04:49:44 MSK 2017на pts/1
# 

Теперь второго, которого не добавляли в группу.

$ su
Пароль: 
su: Доступ запрещен
$ su -
Пароль: 
su: Доступ запрещен
$

Что и требовалось доказать. Один пользователь выполняет команду su, а другой не может. Вот так может работать повышение пользовательских прав при помощи команд su и su -.

Использование традиционного root аккаунта и команды su

Ubuntu 11.04 и младше

Для входа под root достаточно задать ему пароль:

Потом на экране входа нажмите Другой… и введите логин (root) и пароль, который вы задали.

Ubuntu 11.10 и старше

Начиная с версии 11.10 был установлен менеджер входа lightdm, и дело со входом под root обстоит немного сложнее.

1. Устанавливаем root пароль. Введите в терминал:

2. Включаем пункт «Введите логин». Введите в терминал:

В конце файла допишите:

3. Перезагружаем lightdm. Введите в терминал:

Все, на экране входа появится пункт «Логин». В поле логин вводим «root», в поле пароль — пароль, который мы задали на первом этапе.

Для обратной блокировки учетной записи root вам потребуется откатить изменения в настройках lightdm, а также заблокировать учетную запись root командой в терминале:

Как зайти под root в Ubuntu Desktop GUI

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

Откройте фаил /etc/gdm3/custom.conf . Здесь Вам надо будет добавить AllowRoot = true в блоке . Вот так:

Затем откройте файл /etc/pam.d/gdm-password и найдите такую строку:

Закомментируйте её, поставив знак # перед ней:

Далее перезагрузите компьютер. Когда он перезапустится и появится экрану входа в систему — кликните на ссылку «Нет в списке?». Остаётся лишь ввести root в поле username и указать пароль для суперпользователя. Вот и всё!

Как вы знаете, Linux очень серьезно относится к управлению пользователями и предоставлению им прав на работу с системой. Обычный пользователь может записывать файлы только в свой каталог и каталог /tmp/. Также есть возможность читать некоторые файлы в корневой файловой системе. Но вы не можете устанавливать программы, ведь для этого нужно право на запись, не можете изменять атрибуты файлов, не можете запускать сервисы, не можете читать некоторые файлы логов и еще много чего не можете.

В Linux управлять корневой файловой системой и создавать там файлы имеет право только пользователь root.

В этой статье мы рассмотрим какие программы нужны для того, чтобы получить права root пользователя linux, как они работают, как выполнять программу с правами root от обычного пользователя и как запускать графические программы с правами root. А также выясним что такое sudo в чем разница su или sudo.

Добавление пользователей в файл Sudoers

Только учетные записи администратора в Ubuntu могут запускать команды с помощью sudo. Вы можете изменить тип учетной записи пользователя в окне конфигурации учетных записей пользователей.

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

Если вы используете другой дистрибутив Linux, вы можете предоставить пользователю разрешение на использование sudo, выполнив команду Visudo с правами суперпользователя (так что сначала запустите вс или используйте su -c).

Добавьте в файл следующую строку, заменив Пользователь именем учетной записи пользователя:

Нажмите Ctrl-X, а затем Y, чтобы сохранить файл. Вы также можете добавить пользователя в группу, указанную в файле. Пользователи в группах, указанных в файле, автоматически получат привилегии sudo.

Предосторожность

  • Если вы решитесь приобрести Root права, вы автоматически лишаетесь гарантии на телефон;
  • Официально обновлять систему «по воздуху» вероятнее всего, вы больше не сможете;
  • Есть вероятность что вы с данными правами можете испортить ваш телефон. Если вы не являетесь продвинутым пользователем и как следует не понимаете, для какой цели вам необходим Рут доступ, я бы порекомендовал их не приобретать, так как вы можете повредить гаджет, или что-то сделать в настройках, что изменит функционирование телефона;
  • Кроме прочего, получение данных прав не даст вам все те описанные преимущества, а даст вероятность производить отдельные вещи с мобильным гаджетом.

Получение прав root без переключения

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

$ sudo опции команда

Опции программы:

  • -b — выполнять запускаемую утилиту в фоне
  • -E — сохранить переменные окружения
  • -g — запустить команду от группы
  • -H — использовать домашний каталог
  • -l — показать список полномочий в sudo для текущего пользователя
  • -r — использовать для команды роль SELinux
  • -s — использовать оболочку
  • -u — запустить команду от имени пользователя, если не задано используется root
  • -i — не выполнять команду, а войти в оболочку, эквивалентно su —

Вы можете выполнить те же эксперименты, только для этой команды, чтобы понять как использовать команду sudo. Например:

Или:

Использование sudo — это рекомендованный способ выполнять команды от имени суперпользователя в Linux. Так вы не забудете с чем имеете дело и меньше всего рискуете повредить систему. Более подробно о команде sudo читайте здесь. Но остался еще один нерешенный вопрос — как быть с графическими утилитами? Ведь команда sudo их не запускает, а запускать графическую оболочку от имени root небезопасно. Это мы и рассмотрим далее.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: