Получение прав рута в ubuntu. Настройка sudo и прав доступа на выполнение различных команд

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

Раньше данная проблема решалась достаточно просто: при обладании паролем root можно было зайти в систему под его аккаунтом либо временно получить его права, используя команду su . Потом выполнить все необходимые операции и вернуться обратно под обычного пользователя. В принципе, такая схема работает неплохо, однако у неё есть много существенных недостатков, в частности, невозможно никак (точнее, очень сложно) ограничивать административные привилегии только определённым кругом задач.

Поэтому в современных дистрибутивах Linux вместо root аккаунта для администрирования используется утилита sudo .

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

Что такое sudo

sudo - это утилита, предоставляющая привилегии root для выполнения административных операций в соответствии со своими настройками. Она позволяет легко контролировать доступ к важным приложениям в системе. По умолчанию, при установке Ubuntu первому пользователю (тому, который создаётся во время установки) предоставляются полные права на использование sudo. Т.е. фактически первый пользователь обладает той же свободой действий, что и root. Однако такое поведение sudo легко изменить, об этом см. ниже в пункте про настройку sudo.

Где используется sudo

sudo используется всегда, когда вы запускаете что-то из меню Администрирования системы. Например, при запуске Synaptic вас попросят ввести свой пароль. Synaptic - это программа управления установленным ПО, поэтому для её запуска нужны права администратора, которые вы и получаете через sudo вводя свой пароль.

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

Запуск графических программ с правами администратора

Для запуска графических программ с правами администратора можно воспользоваться диалогом запуска программ, вызываемым по умолчанию сочетанием клавиш Alt + F2 .

Допустим, нам необходимо запустить файловый менеджер Nautilus с правами администратора, чтобы через графический интерфейс как-то изменить содержимое системных папок. Для этого необходимо ввести в диалог запуска приложений команду

Gksudo nautilus

Вместо gksudo можно подставить gksu , кроме того, пользователи KDE должны вместо gksudo писать kdesu . У вас попросят ввести свой пароль, и, если вы обладаете нужными правами, Nautilus запуститься от имени администратора. Запуск любого графического ПО можно производить с правами администратора, просто написав в диалоге запуска

Gksudo <имя_команды>

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

Запуск программ с правами администратора в терминале

Для запуска в терминале команды с правами администратора просто наберите перед ней sudo:

Sudo <команда>

У вас попросят ввести ваш пароль. Будьте внимательны, пароль при вводе никак не отображается, это нормально и сделано в целях безопасности, просто вводите до конца и нажимайте Enter . После ввода пароля указанная команда исполнится от имени root.

Система какое-то время помнит введённый пароль (сохраняет открытой sudo-сессию). Поэтому при последующих выполнениях sudo ввод пароля может не потребоваться. Для гарантированного прекращения сессии sudo наберите в терминале

Кроме того, часто встречаются ошибки, связанные с каналами в Linux. При исполнении команды

Sudo cat test.txt | grep text > result.txt

с правами root исполнится только cat , поэтому файл result.txt может не записаться. Нужно либо писать sudo перед каждой командой, либо временно переходить под суперпользователя.

Получение прав суперпользователя для выполнения нескольких команд

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

Sudo -s sudo -i

После этого вы перейдёте в режим суперпользователя (с ограничениями, наложенными через настройки sudo), о чём говорит символ # в конце приглашения командной строки. Данные команды по действию похожа на su , однако: - sudo -s - не меняет домашний каталог на /root, домашним остается домашний каталог пользователя вызвавшего sudo -s , что обычно очень удобно. - sudo -i - сменит так же и домашний каталог на /root.

Для выхода обратно в режим обычного пользователя наберите exit или просто нажмите Ctrl + D .

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

Разблокировка учетной записи root приводит неоправданным рискам (работая постоянно под рутом вы имеете 100500 способов «отстрелить себе ногу»), а также упрощает получение доступа к вашему компьютеру злоумышленником.

Ubuntu 11.04 и младше

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

Sudo passwd root

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

Ubuntu 11.10 и старше

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

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

Sudo passwd root

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

Gksu gedit /etc/lightdm/lightdm.conf

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

Greeter-show-manual-login=true

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

Sudo service lightdm restart

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

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

Sudo passwd -l root

Настройка sudo и прав доступа на выполнение различных команд

sudo позволяет разрешать или запрещать пользователям выполнение конкретного набора программ. Все настройки, связанные с правами доступа, хранятся в файле /etc/sudoers . Это не совсем обычный файл. Для его редактирования необходимо (в целях безопасности) использовать команду

Sudo visudo

По умолчанию, в нём написано, что все члены группы admin имеют полный доступ к sudo , о чём говорит строчка

%admin ALL=(ALL) ALL

Подробнее о синтаксисе и возможностях настройки этого файла можно почитать выполнив

Man sudoers

Если вы допустите ошибку при редактировании этого файла, то вполне возможно полностью лишитесь доступа к административным функциям. Если такое случилось, то необходимо загрузиться в recovery mode, при этом вы автоматически получите права администратора и сможете всё исправить. Кроме того, отредактировать этот файл можно с LiveCD.

Разрешение пользователю выполнять команду без ввода пароля

Для того, что бы система не запрашивала пароль при определенных командах необходимо в sudoers после строки # Cmnd alias specification добавить строку, где через запятую перечислить желаемые команды с полным путём(путь команды можно узнать, выполнив which имя_команды :

# Cmnd alias specification Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /usr/sbin/pm-hibernate, /sbin/reboot

И в конец файла дописать строку

Имя_пользователя ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS

Внимание! Вышеописанные действия не отменяют необходимости ввода команды sudo перед вашей командой

Создание синонимов (alias`ов)

Для того, чтобы не только не вводить пароль для sudo, но и вообще не вводить sudo, сделайте следующее: откройте файл.bashrc, находящейся в вашем домашнем каталоге

nano ~/ bashrc

и добавьте в конец файла строки

alias reboot ="sudo reboot" alias poweroff ="sudo poweroff" alias pm-hibernate="sudo pm-hibernate" alias hibernate ="sudo pm-hibernate" alias shutdown ="sudo shutdown"

Время действия введённого пароля

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

Defaults:foo timestamp_timeout=20

Здесь sudo для пользователя foo действует без необходимости ввода пароля в течение 20 минут. Если вы хотите, чтобы sudo всегда требовал ввода пароля, сделайте timestamp_timeout равным 0.

sudo не спрашивает пароль

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

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

ALL ALL=(ALL) NOPASSWD:ALL

Скорее всего, эта катастрофичная строка была добавлена при установке программы типа Connect Manager от МТС или Мегафона. В таком случае, её нужно поменять на строку, разрешающую с правами root запускать только этот Connect Manager, примерно так:

Юзернейм ALL= NOPASSWD: /путь/к/программе

Есть и другие варианты решения проблемы, небольшое обсуждение .

Когда мы хотим запускать программы с правами root, мы используем sudo , gksu , gksudo и т. Д. Теперь мой вопрос: как мы можем запускать Terminal в качестве пользователя root в Terminal?

Я пробовал использовать gksudo terminal gksu terminal но ничего не происходит. и, запустив sudo terminal я получу ошибку sudo: terminal: command not found .

Эмулятор терминала по умолчанию на Ubuntu – это терминал GNOME . Он расположен в /usr/bin/gnome-terminal и может быть запущен с помощью команды gnome-terminal .

Что вы действительно хотите

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

Предполагая, что вы хотите, как предложил steeldriver , просто запустите:

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

Но если вы действительно хотите запустить приложение эмулятора графического терминала как root, прочитайте дальше. Я представляю два способа: с помощью gksu / gksdo и командой sudo .

С gksu / gksudo

Поскольку у вас есть gksu установленный пакет, вы можете запустить gnome-terminal как root с любым из:

Gksu gnome-terminal gksudo gnome-terminal

(Так как gksu по умолчанию установлен в sudo-mode в Ubuntu, они должны быть эквивалентными.)

Запуск gnome-terminal как root без управляющего gnome-terminal без полномочий root:

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

Обычно это достигается с помощью Alt + F2 . Появится текстовое поле с надписью Run (или аналогичное), и вы сможете ввести свою команду.

Например, это похоже на Unity:

И как в MATE (GNOME Flashback / Fallback, Xfce, LXDE похожи):

Обратите внимание, что это работает с gksu и gksudo потому что они используют графическое диалоговое окно проверки подлинности. Если вы должны были нажать Alt + F2 и запустить sudo ... , вы не сможете взаимодействовать с подсказкой пароля.

С sudo

Если у вас нет пакета gksu, и вы не захотите его установить, вы можете использовать:

Sudo -H gnome-terminal

Флаг -H важен, поскольку он устанавливает переменную среды HOME в /root вместо домашнего каталога вашего собственного пользователя. Вы не должны использовать sudo gnome-terminal как он может нарушить конфигурацию gnome-terminal, принадлежащую пользователю без полномочий root. Для получения дополнительной информации об этом см.

(sudo -i gnome-terminal тоже в порядке.)

Избавление от управляющего терминала без полномочий:

Если вы (1) открываете графический терминал, (2) запускаете в нем что-то вроде sudo -H gnome-terminal , создаете новый графический корневой терминал и (3) выходите из оригинального графического терминала без полномочий root … тогда корневой графический терминал завершает работу.

Это связано с тем, что корневой графический терминал отправляется SIGHUP, когда терминал, который его владеет, выходит из него.

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

Sudo -H gnome-terminal &

Но это будет работать, только если sudo не будет запрашивать пароль. Если это произойдет, вы не увидите приглашение пароля.

Один из способов обойти это – использовать:

Sudo -v sudo -H gnome-terminal

sudo -v существует только для этой цели. Как объясняется в man sudo , он «обновляет [s] кэшированные учетные данные пользователя, при необходимости аутентифицируя пользователя».

Обратите внимание, что это все равно не сработает, если вы запускаете прямо из командной строки Alt + F2 рабочего стола среды рабочего стола, потому что вам все еще нужен терминал для ввода пароля для sudo -v .

Или вы можете сделать это в том, что можно назвать традиционным способом, приостановив работу после ее запуска:

  1. Запустите sudo -H gnome-terminal из исходного графического терминала без полномочий root.
  2. Введите пароль, как указано в sudo . Начнется графический терминал.
  3. Находясь в терминале без полномочий root , нажмите Ctrl + Z, чтобы приостановить корневой терминал. Хотя корневой терминал приостановлен, вы не можете его использовать; его интерфейс не будет реагировать на ваши действия.
  4. Выйдите из управляющего терминала без exit root с exit . Задание графического корневого терминала будет автоматически отменено и отменено терминалом без полномочий root.

Sudo -H gnome-terminal ^Z exit

Но предположим, что вы хотели продолжать использовать оригинальный, не-корневой терминал. Затем вы можете запустить bg N , где N – номер задания графического корневого терминала, чтобы возобновить работу в фоновом режиме. Вы можете запускать jobs чтобы найти N но вам, вероятно, не придется – этот номер был показан как [ N ] когда вы нажимали Ctrl + Z. Например:

Ek@Ilex:~$ sudo -H gnome-terminal password for ek: ^Z [ 1 ]+ Stopped sudo -H gnome-terminal ek@Ilex:~$

Короткий ответ:

Gksudo gnome-terminal (assuming gksu is installed)

открывает терминал как root:

Root@jacob-Satellite-L300:~#

Не нужно объяснять, что вы можете использовать это, чтобы открыть любой терминал как root; например, Vala (gksudo vala-terminal), gksudo xterm (gksudo xterm), Termit (gksudo termit), UXTerm (gksudo uxterm), Konsole (gksudo konsole) и так далее.

Есть еще один способ сделать это, протестировать и работать с Ubuntu 16.04 LTS:

Сначала установите gnome-панель:

Sudo apt install gnome-panel

Затем установите gksu:

Sudo apt install gksu

По завершении установки запустите:

Gnome-desktop-item-edit ~/Desktop/ --create-new

Это создает ярлык на рабочем столе. У вас должна быть возможность назвать его. Я назвал свой «X-Term», но вы можете назвать свое, что бы вы ни пожелали. Введите /usr/bin/gksu * для пути «Command».

1. Использование команды: su

Многие команды могут быть запущены только суперпользователем, поэтому мы должны знать, как становится им (root-ом). Чтобы сделать это, мы можем использовать команду: su (смена пользователя). Команда su принимает следующие форматы:

но чаще всего мы будем использовать su для того, чтобы стать пользователем root :

Su - root

если имя пользователя в строке не указано, то автоматически предпологается пользователь root, поэтому команду можно сократить:

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

Зачастую пользователи используют "su" для перехода в root. Попробовав запустить команду (например - ifconfig), вы получите: "command not found" error.

Su Password: ifconfig bash: ifconfig: command not found

Причина заключается в том, что обычные пользователи системы и root пользователь имеют различные переменные окружения PATH (вы можете посмотреть PATH пользователя при помощи "echo $PATH). После ввода команды Linux, оболочка будет искать пользовательский PATH, чтобы попытаться найти команду для запуска. Она начинает поиск в каждой директории указанной в PATH, пока цель не будет найдена.

Команды обычных пользователей обычно расположены в /usr/local/bin, /usr/bin и /bin. А команды пользователя root распологаются в основном в /usr/local/sbin, /usr/sbin, /sbin и корневой PATH это отражает. Поэтому, когда вы становитесь суперпользователем при помощи "su -", то вы также принимаете и новый путь PATH к основным командам. А используя только "su", сохраняется пользовательский путь PATH по умолчанию, следовательно, при попытке выполнить программу расположенную в /usr/local/sbin, /usr/sbin, /sbin выдаст результат: "command not found" error. Для более детального объяснения, смотрите справочную страницу (man bash), особенно раздел login shells.

Таким образом, вы или должны указывать полный путь к команде (пример - /sbin/ifconfig) при использовании "su", либо использовать "su -", когда становитесь root-ом.

2. Использование Sudo

Вам не нужно быть суперпользователем каждый раз, когда вы хотите запустить некоторые конкретные административные функции. Благодаря Sudo , вы можете запустить некоторые или все команды как под root-ом. Когда Sudo установлен (пакет: Sudo), вы можете настроить его при помощи команды "visudo" под root-ом. В основном он редактирует (Vim по умолчанию) /etc/sudoers, но это не рекомендуется делать вручную.

Alex ALL=(ALL)ALL

Alex - имя пользователя. Сохраните (нажать escape, затем ввести wq), и все готово. Войдите как alex, и запустите например:

$sudo yum update

Sudo запросит пароль. Это пароль alex-а, а не пользователя root. Так что будте осторожны, когда вы даете права пользователя с Sudo.

Но Sudo может сделать не только это, а гораздо больше. Мы можем позволить пользователю или группе пользователей запускать только одну команду или группу команд. Давайте вернемся к нашему sudoers файлу. Начнем с alex и alisa, членов группы administrator. Если мы хотим, чтобы все пользователи из группы"administrator" были в состоянии запустить каждую команду в качестве суперпользователя, мы должны изменить наш пример:

%admin ALL=(ALL)ALL

Alex так же может выполнить суперпользовательскую команду, и alisa получила право запускать Sudo, с теми же правами и со своим паролем. Если alex и alisa не члены одной группы, мы можем определить псевдоним пользователя в файле sudoers:

User_Alias ADMINS = alisa,alex

Здесь мы определили алиас под названием ADMINS, с членами alisa и alex.

Тем не менее, мы не хотим, чтобы alex и alisa могли запускать с правами суперпользователя любую програму. Мы хотим, чтобы они могли запускать только "updatedb". Давайте определим команду псевдоним:

Cmnd_Alias LOCATE = /usr/sbin/updatedb

Но этого мало! Мы должны сказать Sudo, что пользователи, определенные как ADMINS, могут запускать команды заданные в LOCATE. Чтобы сделать это, мы заменим строки с "%admin" на эти:

ADMINS ALL = LOCATE

Это означает, что пользователи входящие в алиас ADMINS могут запускать все команды в алиасе LOCATE.

На этот раз, /etc/sudoers выглядит следующим образом:

User_Alias ADMINS = alisa, alex Cmnd_Alias LOCATE = /usr/bin/updatedb ADMINS ALL = LOCATE

В результате alex и alisa могут запускать updatedb, как root, введя свой пароль.

Если последнюю строчку в файле изменить:

ADMINS ALL = NOPASSWD:LOCATE

тогда alex и alisa смогут выполнить "sudo updatedb" без ввода пароля.

Можно добавить другие команды в командный алиас и более алиасов в правило. Например мы можем создать алиас NETWORKING содержащий некоторые сетевые команды типа: ifconfig, route или iwconfig:

Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhcclient, /usr/bin/net, sbin/iptables, /usr/bin/rfcom, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool

Давайте все это добавим в наш /etc/sudoers файл (с помощью visudo!). А также предоставим нашей ADMINS групе права на выполнение программ и из алиаса NETWORKING:

User_Alias ADMINS = alice, bob Cmnd_Alias LOCATE = /usr/bin/updatedb Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net,/sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool ADMINS ALL = LOCATE, NETWORKING

Маленькая проба: войдите в систему как alisa (или alex), и наберите:

$ping -c 10 -i localhost

Ответ должен вернуться быстро:

PING localhost.localdomain (127.0.0.1) 56(84) bytes of data. ping: cannot flood; minimal interval, allowed for user, is 200ms

Теперь, тоже-самое но с Sudo:

$sudo ping -c 10 -i 0 localhost PING localhost.localdomain (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.049 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=0.034 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=3 ttl=64 time=0.021 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=4 ttl=64 time=0.030 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=5 ttl=64 time=0.017 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=6 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=7 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=8 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=9 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=10 ttl=64 time=0.016 ms --- localhost.localdomain ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 1ms rtt min/avg/max/mdev = 0.016/0.023/0.049/0.010 ms, ipg/ewma 0.187/0.028 ms

Sudo часто используется для предоставления определенным пользователям частичного доступа к привелигированным командам, чтобы они могли выполнять ограниченные административные функции. Одно из удобств Sudo в том, что все команды записываются в /var/log/secure. Приведенный выше пример будет описан строчкой в журнале:

Apr 18 11:23:17 localhost sudo: alex: TTY=pts/0 ; PWD=/home/alex ; USER=root ; COMMAND=/bin/ping -c 10 -i 0 localhost

Вот и все. Теперь никогда не забуду, когда использовал Sudo: "с большой властью приходит большая ответственность".

2.1 Sudo shell

Если у вас настроено достаточно прав в sudoers, вы также можете открыть root-ую оболочку shell используя:

В последних версиях только на CentOS 5, для запуска shell под root, используется sudo -s. Будьте очень осторожны, так как это может менять или создавать новые файлы в домашней директории Root, а установку вести в домашний каталог вызвавшего пользователя.

3. consolehelper

Consolehelper представляет собой оболочку для запуска GUI приложений. Когда он начинает работать, он проверяет конфигурацию PAM для требуемого применения. Это означает, что мы можем проводить аутентификацию пользователя с помощью всех установленных модулей PAM. Основной метод состоит в том, чтобы запросить пароль, но если мы имеем надлежащее оборудование. мы можем аутентифицировать с помощью смарткарты, жетонов, отпечатков пальцев и т.д. Конфигурация PAM выходит за рамки этого документа (см. PAM Руководство администратора), поэтому мы рассмотрим этап настройки consolehelper, необходимый для запуска приложений под root-ом и запросом пароля root.

В качестве примера, давайте настроим /usr/bin/xterm для запуска в качестве root-ого.

Ln -s /usr/sbin/consolehelper /usr/bin/xterm-root

Теперь для конфигурирования PAM - создайте файл /etc/pam.d/xterm-root:

#%PAM-1.0 auth include config-util account include config-util session include config-util

Наконец, настройте consolehelper на запуск /usr/bin/xterm под root-ом, командой "xterm-root". Создайте файл /etc/security/console.apps/xterm-root:

USER=root PROGRAM=/usr/bin/xterm

Вот и все. Запускайте "xterm-root" (из командной строки или ярлыком.desktop file), введите пароль и в путь. Если вы получили сообщение об ошибке: "Xlib: connecttion to ":0.0" refused by server", запустите сначала "xhost local:root".

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

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

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

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

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

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

Вход под суперпользователем

Чтобы войти под пользователем root можно переключиться в одну из виртуальных консолей, например, с помощью сочетания клавиш Ctrl+Alt+F1 и затем ввести логин root и пароль root пользователя.

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

Можно поступить полностью противоположным путем, ввести логин root и его пароль в графическом менеджере входа, чтобы окружение рабочего стола работало от имени root, и мы получаем все права root linux, но такой вариант крайне не рекомендованный, и очень опасный, вы можете случайно повредить всю систему. Поэтому этот способ был отключен во многих менеджерах входа.

Переключение на суперпользователя в терминале

Теперь мы подошли к более интересному и практичному. С помощью специальных утилит вы можете переключить текущий эмулятор терминала в окружения суперпользователя и выполнять все следующие команды не от своего имени, а от его, таким образом, дав программе права root linux. Для этого существует утилита su. Вообще говоря, эта утилита позволяет не только переключаться на пользователя root но и на любого другого пользователя, но по умолчанию используется именно root. Рассмотрим ее подробнее. Команда su linux имеет следующий синтаксис:

$ su опции пользователь

Вот ее основные опции:

  • -c, --command - выполнить команду
  • -g, --group - установить основную группу пользователя (только для root)
  • -G --supp-group - дополнительные группы пользователя (только для root)
  • -, -l, --login - режим входа, будут очищены и инициализированы с учетом нового пользователя все переменные окружения, а также изменен домашний каталог
  • -p, --preserve-environment
  • -s, --shell - задать оболочку для входа
  • --version - отобразить версию программы.

Теперь немного поэкспериментируем, чтобы понять как работает команда su linux.

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

Теперь выполняем:

Теперь смотрим что получилось:

whoami
$ pwd
$ echo $VAR
$ echo $PATH
$ exit

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

Теперь используем вход в режиме логина:

И повторим ту же комбинацию:

whoami
$ pwd
$ echo $VAR
$ echo $PATH
$ exit

Та же ситуация, только на этот раз изменена ко всему еще и домашняя директория на директорию root. Но мы можем сохранить наши переменные окружения, если это нужно, для этого есть опция -p:

Как видите, наша переменная осталась. Вы также можете переключится на любого другого пользователя. Например:

Получение прав суперпользователя таким способом используется во многих дистрибутивах, например, Debian, OpenSUSE, ArchLInux, Gentoo и т д. Но в Ubuntu, как дистрибутиве для начинающих вход под пользователем root отключен. Это сделано потому, что это тоже не очень безопасно, вы можете забыть что выполняете команду от root и что-то натворить в системе. Поэтому переходим к следующей программе.

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

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

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

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

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

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

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

Графически приложения от имени суперпользователя

Для запуска графических приложений от имени суперпользователя существуют специальные утилиты. Они сохраняют все необходимые переменные окружения и полномочия. В KDE это команда kdesu, а в Gnome команда gksu.

Просто наберите gksu или kdesu, а затем нужную команду:

Эта команда запустит файловый менеджер KDE с правами суперпользователя. В Gnome это будет выглядеть вот так:

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

Выводы

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

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

Зачем нужны root права на андроид?

Android основан на Linux. В Linux и других Unix-подобных операционных системах, пользователь root эквивалентен администратору на Windows. Пользователь root имеет доступ ко всей операционной системе, и может делать что угодно. По умолчанию, Вы не имеете root прав на своем устройстве Android, и некоторые приложения не работают без прав суперпользователя. Как и другие современные мобильные операционные системы, Android запускает приложения в «песочнице» в целях безопасности.

Пользователь с root правами всегда существует в Android, просто нет встроенного способа чтобы получить к нему доступ. Получение root прав означает, что Вы получаете доступ к учетной записи с правами суперпользователя. Это процесс часто сравнивают с джейлбрейком на iPhone или iPad, но получение root прав и джейлбрейк это разные действия.

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

Приложения, которые требуют root права, не трудно найти в Google Play Store, но они не будут работать пока Вы не получите права суперпользователя. У некоторых приложений есть функции, которые работают на устройствах с рут правами. Поэтому Вам нужно узнать, как открыть root права на android, чтобы воспользоваться этими функциями.

Предупреждения

На Android устройствах не могут быть получены root права по разным причинам. На самом деле производители устройств из всех сил стараются помешать получить права на Android гаджете. И вот почему:

  • Безопасность : На рутированных устройствах приложения при работе выходят за рамки «песочницы». Приложения могут злоупотреблять правами суперпользователя, которые Вы предоставили и лезть в другие приложения, что обычно не возможно. Поэтому Google не одобряет использование Android Pay на устройствах с root правами.
  • Гарантия : Некоторые производители утверждают, что после получения root прав пропадает гарантия . Однако, получение прав суперпользователя не нарушит аппаратное обеспечение. Во многих случаях Вы можете выполнить процедуру отказа от root прав и производитель не сможет узнать, были ли получены рут права или нет.
  • Поломка : Как обычно, Вы делаете это на свой страх и риск. Получение рут прав, обычно, это безопасный процесс, но Вы делаете его самостоятельно. Если Вы что-то испортите, то не сможете рассчитывать на бесплатное гарантийное обслуживание, чтобы исправить это. Если Вы беспокоитесь, все ли пройдет гладко, то рекомендуем сначала поискать информацию об успешном получении прав суперпользователя на Вашем устройстве, чтобы быть уверенным, что в процессе не будет никаких подводных камней.

Кроме того, получение root прав может привести к аннулированию вашей гарантии , по крайней мере для некоторых видов ремонта.

Несколько путей о том как открыть root права на android

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

  • Разблокировка загрузчика : Google и производители устройств официально не поддерживают получение root права, но предоставляют официальный способ для низкоуровневого доступа к некоторым устройствам , что позволяет потом получить права суперпользователя. Например, Nexus устройства предназначены для разработчиков, и Вы можете легко разблокировать загрузчик с помощью одной команды. А затем получить рут права загрузить.zip архив, содержащий файл для получение прав, через экран восстановления. Утилита Nexus Root Toolkit для устройств Nexus автоматизирует этот процесс. Другие производители также предлагают способы разблокировки загрузчика, но только для определенных устройств.
  • Использование уязвимости в системе безопасности : Другие устройства заблокированы. Их производители не обеспечивают официального способа разблокировать их загрузчик и вмешаться в их программное обеспечение. Эти устройства могут быть рутированы только с использованием уязвимости в системе безопасности, которая позволяет установить необходимый файл в системный раздел.
  • Установка CyanogenMod или другой пользовательской прошивки на Android: Технически, это — расширение одного из вышеупомянутых методов. Разблокировка загрузчика операционной системы и эксплуатация уязвимости безопасности позволяют Вам устанавливать пользовательские прошивки, например, CyanogenMod, которые часто уже рутированы. В CyanogenMod есть простой переключатель в настройках, который позволяет включить или отключить root доступ. Обновление до новой версии CyanogenMod или другой пользовательской прошивки не отключит root права, если прошивка уже рутирована.

В этой статье мы будем, прежде всего, использовать первый способ заключающий в разблокированном загрузчике. Если Ваш телефон требует использования уязвимости, то мы не сможем помочь Вам, поскольку этот процесс отличается для каждого телефона. Вы можете поискать информацию о том как открыть root права на android на форуме XDA Developers . Можно использовать приложения Kingo Root и Towelroot , которые позволяют получить права суперпользователя в один клик.

Прежде чем открыть root права на android, Вам потребуется разблокировать загрузчик официальным способом , а затем установить среду восстановления TWRP, используя эти инструкции . Мы будем использовать TWRP, чтобы рутировать Ваш телефон.

Как загрузить SuperSU на Ваш телефон и получить root доступ

Итак, у Вас разблокирован загрузчик, и Вы установили TWRP. Отлично! Вы практически все сделали. Чтобы получить root права, мы собираемся использовать программу SuperSU . Это лучшее приложение, которое может предоставлять root доступ другим приложениям. SuperSU также доступна в Google Play Store, но это версия не предоставит Вам права суперпользователя, ее можно использовать, только если у Вас уже есть root права. К счастью SuperSU также доступен как.zip файл, который мы можем загрузить с TWRP. Это позволит получить права суперпользователя и установить приложение SuperSU.

Итак, для начала, перейдите по этой ссылке , чтобы скачать последнюю версию SuperSU. Загрузите.zip файл на свой компьютер, подключите Ваш телефон через USB-кабель к ПК и загрузите SuperSU на телефон.

Далее, загрузите телефон в TWRP режиме. На разных телефонах это делается по-разному, но обычно нужно выключить телефон и нажать и удерживать кнопку включения+клавишу увеличения громкости в течение 10 секунд, далее, используя клавиши громкости перейти к пункту «Recovery Mode» и нажать на кнопку включения, чтобы выбрать его.

Как только Вы это сделаете Вы попадете на главный экран TWRP. Нажмите на кнопку «Install».

ПРИМЕЧАНИЕ: необходимо сделать backup twrp прежде чем продолжить.

Появится следующий экран. Прокрутите вниз и перейдите к zip-файлу, который Вы загрузили ранее.

Нажмите на zip файл и Вы увидите этот экран. Проведите по слайдеру, чтобы подтвердить установку.

Когда процесс завершится, нажмите на кнопку “Wipe cache/Dalvik”, которая появится и проведите по слайдеру для подтверждения.

Когда процесс завершится нажмите на кнопку «Reboot System», чтобы вновь загрузить Android систему.

Если TWRP спросит установить ли SuperSU нажмите «Do Not Install». Иногда, TWRP не может определить, что у Вас уже установлена SuperSU.

Управление root правами с приложением SuperSU

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

После перезагрузки телефона Вы должны увидеть новый значок SuperSU в меню приложений. SuperSU раздает права приложениям, которым они требуются. Всякий раз, когда приложение хочет попросить права суперпользователя, он должен просить Ваше приложение SuperSU , который будет показывать этот запрос. Чтобы убедиться, что рут права работают, Вы можете скачать приложение Root Checker для проверки прав суперпользователя.

Например, откроем и добавим приложение Clean Master , которое позволяет очистить Ваше устройство от скопившегося мусора. Оно требует наличие рут прав для более эффективного очищения. После запуска Вы увидите сообщение о том, что необходимо предоставить права суперпользователя. Нажмите «Предоставить».

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

Для удаления рут прав откройте приложение SuperSU, зайдите в настройке и выберите опцию «Полное удаление Root». Если для Вашего устройства это применимо, то рут права будут удалены.

Теперь Вы знаете как открыть root права на android и как их удалить. Желаем удачи!