Как вы знаете, Linux очень серьезно относится к управлению пользователями и предоставлению им прав на работу с системой. Обычный пользователь может записывать файлы только в свой каталог и каталог /tmp/. Также есть возможность читать некоторые файлы в корневой файловой системе. Но вы не можете устанавливать программы, ведь для этого нужно право на запись, не можете изменять атрибуты файлов, не можете запускать сервисы, не можете читать некоторые файлы логов и еще много чего не можете.
В Linux управлять корневой файловой системой и создавать там файлы имеет право только пользователь root.
В этой статье мы рассмотрим какие программы нужны для того, чтобы получить права root пользователя linux, как они работают, как выполнять программу с правами root от обычного пользователя и как запускать графические программы с правами root. А также выясним что такое sudo в чем разница su или sudo.
Содержание статьи
- Права суперпользователя в Linux
- Вход под суперпользователем
- Переключение на суперпользователя в терминале
- Получение прав root без переключения
- Графически приложения от имени суперпользователя
- Выводы
Права суперпользователя в Linux
Очень долго перечислять чего не может обычный пользователь 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 без параметров, но для начала создадим переменную окружения, чтобы проверить как с ними обходится эта команда:
export VAR=1
Теперь выполняем:
su
Теперь смотрим что получилось:
whoami
pwd
echo $VAR
echo $PATH
exit
Из этих команд мы видим, что теперь мы пользователь root, но домашней директорией считается директория нашего предыдущего пользователя и наша переменная не сохранилась также изменилась переменная PATH, теперь там добавлен путь /sbin.
Теперь используем вход в режиме логина:
su -
И повторим ту же комбинацию:
whoami
pwd
echo $VAR
echo $PATH
exit
Та же ситуация, только на этот раз изменена ко всему еще и домашняя директория на директорию root. Но мы можем сохранить наши переменные окружения, если это нужно, для этого есть опция -p:
su -p
Как видите, наша переменная осталась. Вы также можете переключится на любого другого пользователя. Например:
su - test
Более подробно о команде su вы можете почитать в отдельной статье. Получение прав суперпользователя таким способом используется во многих дистрибутивах, например, 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 ls
Или:
sudo -u test ls
Использование sudo - это рекомендованный способ выполнять команды от имени суперпользователя в Linux. Так вы не забудете с чем имеете дело и меньше всего рискуете повредить систему. Более подробно о команде sudo читайте здесь. Но остался еще один нерешенный вопрос - как быть с графическими утилитами? Ведь команда sudo их не запускает, а запускать графическую оболочку от имени root небезопасно. Это мы и рассмотрим далее.
Графически приложения от имени суперпользователя
Для запуска графических приложений от имени суперпользователя существуют специальные утилиты. Они сохраняют все необходимые переменные окружения и полномочия. В KDE это команда kdesu, а в Gnome команда gksu.
Просто наберите gksu или kdesu, а затем нужную команду:
kdesu dolphin
Эта команда запустит файловый менеджер KDE с правами суперпользователя. В Gnome это будет выглядеть вот так:
gksu nautilus
Программа запросит пароль, уже в графическом окне, а потом откроется файловый менеджер.
Выводы
Вот и все. Теперь вы знаете как получить права суперпользователя в Linux, знаете как использовать команду sudo и в чем разница sudo или su. Теперь программы, требующие дополнительных привилегий в системе, не вызовут у вас проблем. Если остались вопросы, пишите в комментариях!
Уважаемый Сергей. Вам определенно требуется корректор - в каждой статье не менее пяти орфографических ошибок (про запятые я даже не упоминаю). Предложенная правка по Ctrl+Enter вскоре перестает срабатывать: включается "защита от спама". Не желаете ли вы воспользоваться моими услугами по корректорской верстке статей? Вы повышаете компьютерную грамотность подписчиков, это - замечательно, но и обычной грамотности следует уделять внимание. С уважением, Олег.
Добрый вечер Олег! Я буду очень признателен, если вы поможете исправить ошибки на сайте. Регистрируйтесь и сообщите мне свой логин.
Кстати да, он прав. Я сам часто замечаю у Вас ошибки)) Буду признателен, если Вы повысите грамотность. Статьи очень полезные, и хочется видеть чистый грамотный русский текст!))
МНОГОУВАЖАЕМЫЙ админ! Скажите, проблемы с русским языком-это болезнь всех айтишников? Для кого Вы все это пишете? Попробуйте прочесть то, что Вы написали отстраненно, с позиции чайника! Вот парочка Ваших перлов:
...зададим переменную окружения... Какое окружение? Кто кого окружил? Немцев под Москвой что-ли? или -s -использовать оболочку Оболочку чего? Скорлупу от яйца? Картофельные очистки? Или может презерватив?-тоже оболочка. И как использовать?
Правильно написал Вам BVZ, по другому Вы попросту НЕПРОБИВАЕМЫ.
Да! Надо же знать мат. часть и уметь искать, иначе все статьи будут по 100500 символов и никакого времени не хватит на их написание. Окружение - https://losst.pro/peremennye-okruzheniya-v-linux, Оболочка - https://losst.pro/evolyutsiya-komandnyh-obolochek-linux
Люди разучились просто быть благодарными за то-что ,кто-то уделяет время и знания свое. Сидят учат как правильно писать надо
Странно, тот-же Thunar я запускал через sudo и все норм работало, про gksu не знал. В чем разница? Я нуб, если что.
Дело в том, что sudo предназначено для выполнения консольных команд, здесь не устанавливаются специальные переменные окружения, такие как DISPLAY и т д. Если вы попытаетесь выполнить графическое приложение через sudo в Gentoo или ArchLinux. Gksu и kdesu разработаны специально для запуска графических приложений.
Стоит версия Ubuntu 18.04.1 LTS. Команда gksu не работает
Уважаемый Сергей! Огромное спасибо за Ваш сайт. Только начал изучать Linux MX17 (XFCE). Столкнулся с проблемой - часть программ перестала запускаться с ярлыков (в терминале все нормально). Причиной, наверное, является запуск SU без черточки, что повлекло изменение PATH для Root и прав на запуск этих программ. Как можно решить эту задачу (развернутая аналогичная ОС имеется на другом разделе)? Огромное спасибо за ответ и удачи.
Уважаемый Сергей! Выяснил дополнительно следующее:
1. При вводе su - выдает "сбой при проверке подлинности".
2. Программы, требующие привилегий (ввода пароля администратора) через графический интерфейс не запускаются. При этом, с терминала их запуск происходит нормально, запуск же программ, требующих привилегий root - без проблем.
3. Смена паролей пользователя и root результатов не дала. Пользователь (основной) - в группе sudo есть, команды sudo, sudo su работают, содержание файла etc/sudoers, значение $PATH проверил - соответствуют исходным данным.
Я не понимаю что у вас там происходит с ярлыками. Попробуйте сбросить настройки XFCE, вряд-ли тут su или sudo виноваты.
Сбросил. Без изменений. Все равно огромное спасибо и удачи. Буду искать дальше.
Гавно ваша статья, задротно пишете все. Нужно проще. Не все такие очкарики как вы
Многоуважаемый сударь BVZ!
Позвольте поправить Ваш, комментарий в соответствии с правилами общения принятыми в обществе людей.
Как мне кажется, Вам следовало бы свои мысли выразить следующим образом:
"Многоуважаемый Asdmin! Примите мою искреннюю благодарность за Вашу статью на такую чрезвычайно важную для пользователей "Линукс" тему как права суперпользователя. Несмотря на несомненные достоинства Вашей работы, позвольте мне в меру моей компетентности высказать несколько критических замечаний. Мне кажется, что Ваш стиль изложения несколько сложен для понимания тех кто использует "Линукс". Надеюсь, что Ваши следующие статьи будут более понятны для меня (например). Позвольте ещё раз поблагодарить Вас, за Ваш такой нужный, для нас линуксоидов, труд. Искренне Ваш, BVZ."
Многоуважаемый BVZ, если Вы хотите чтобы к Вашим словам прислушивались и воспринимали Вас как человека, а не как животное, научитесь быть вежливым и культурным.
Многоуважаемый Админ!
Огромное спасибо за Вашу статью. Ведь мы, те кто начинает пользоваться "Линукс", очень многого не знаем, поэтому нам как воздух, нужны такие статьи как Ваша.
С уважением, Лёгкий А.Н.
kdesu dolphin
команда kdesu не найдена. Через root и пароль от рута зайти не удается. Нахуй такие статьи?
Здравствуйте. не могу отформатировать SDHC , пробовал с программой Диски и Gparted , карту не видит, пишет-- mount: /mnt/sdb: operation permitted for root only --- ( только для root )--- возможно ли в терминале её отформатировать?
Второй день с ubuntu самый тупой на свете и при всем при этом уже знаю что бы войти в root достаточно только ввести $ sudo su Автор у тебя сайт хоть и про lunex но ни одной из предложенных статей воспользоватся не получилось так как ты пишешь хрен знает что и не по теме, а вызвано это только поисковой оптимизацией, другими словами сайт у тебя не для людей а для робота яндекса.
Здравствуйте! Прочитал комменты, и пришел к выводу: комменты с претензией написали те, кто установил ОС с ошибками, или сделали кое-какие изменения в системе, приведшие к неработоспособности отдельных модулей. Я думаю так: если есть проблемы, напишите, попросите помощи в решении проблемы. А если не понятен какой-нибудь термин, погуглите. Ведь если углубляться в объяснинии про вся и все, статьи не хватит. Я сам нуб в Линуксе, тем не менее статьи админа мне во многом помогли, и помогут в будущем, дай Бог. Мне уже за 40, пересел на Линукс 2-3 месяца назад. И жалею, что не сделал этого, по ряду причин, раньше. Хотя и Windows нравится (не дальше Семерки), но Линукс сильно увлек. Дело в том, что живу в Туркменистане, где инет самая худшая, и не мог добыть дистрибутив в несколько гигов.
Спасибо большое за ваш труд!!! Небольшое пожелание: если вам не трудно, напишите чуть более развернутый путеводитель по sudo, вы ведь далеко не все по команде расписали
Вместо gksu нужно pkexec thunar например и все ок.
Я установил убунту 20.04 на виртуалку и в процессе установки не не предлагалось задать пароль рут пользователя. есть ли какой то стандартный пароль для рута, или единственный юзер и есть рут?
В Ubuntu по умолчанию root пользователь отключен, используйте sudo и вашего пользователя.
А как запустить команду в терминале с root правами загрузившись с Debian live? После su он запрашивает пароль, но ведь я его не знаю. С пустым не работает. Сначала я думал, что root права в данном случае даются по умолчанию, но команда требующая root без него не работает.
Всё, нашёл, как это сделать. Оказалось, делать ничего не нужно, просто вводим sudo и всё отрабатывает без лишних вопросов. Сначала пытался получить root права через su, но тогда требуется пароль. В одном месте писали, что пароль "live", но он не подходит.
Утилита gksu давным-давно канула в лету, на что указывает недоумение некоторых комментаторов.
https://itsfoss.com/gksu-replacement-ubuntu/
Во многих случаях ее заменяет nautilus-admin — расширение файлового менеджера Nautilus, обеспечивающее возможность открывать файлы от имени администратора через пункт в контекстном меню (устанавливается командой sudo install nautilus-admin ).
vitaliy@vitaliy-B550M-S2H:~$ su
Пароль:
su: Сбой при проверке подлинности
Вместо
su
используйте
sudo -i
Огромное уважение автору. И те, кто решился ему помочь, парни и вам тоже. Не судите строго за грамматические ошибки. Спасибо большое.
Ни в Kubuntu 22.04, ни в Debian 11 с KDE команда kdesu не существует. Читаю, в сети пишут что выпилили её и причём давно.
И вообще в Debian как то всё странно, при установке системы просит ввести пароль для root (то есть супер пользователя) и для обычного пользователя. Задаём пароли, ждём конца установки системы, запускается и пытаемся проверить есть ли обновления командой sudo apt update, почему то просит ввести пароль от обычного пользователя и само собой команда не выполняется так как обычный пользователь не имеет прав sudo.
Это можно обойти войдя в терминале под root командой su и выполнить необходимые действия.
А как быть с графическими приложениями которые требуют повышеных прав? Например при попытке изменить репозитории через центр программ Discover так же запрашивается от обычного пользователя у которого нет достаточных прав.