Root Linux — инструкции учетной записи суперпользователя

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

Зачем использовать sudo без ввода пароля?

Объясню, зачем это нужно и почему удобно лично для меня. У меня есть локальный сервер Apach2, на котором я частенько провожу всякие эксперименты, тренирую php, учу Zend Framework и многое другое. В общем, издеваюсь над ним. Как порядочный пользователь, я включаю его, когда он мне нужен и выключаю, когда наиграюсь. Это делается с помощью двух команд.

sudo /opt/lampp/lampp start sudo /opt/lampp/lampp stop

Ламп-сервер лежит в директории /opt, которая защищена от вторжения рядовых пользователей, поэтому без применения sudo не обойтись. Проблема в том, что мне надоедает каждый раз вводить пароль для такой элементарной операции. Кроме того,  я не буду против, если кто-нибудь подойдет и включит apach без моего разрешения, пожалуйста. Можете даже выключить. Поэтому ставить пароль на эти команды вовсе необязательно. Решение нашлось мгновенно и в нем нет ничего сложного, главное сделать все внимательно и сосредоточено. В прочем, все, что касается настройки Linux нужно делать медленно и вдумчиво, утверждаю основываясь на собственном горьком опыте. Поэтому ловим максимальную концентрацию и приступаем к настройке.

ответа

Основная проблема — одна из (не очень) нормальных настроек среды.

Используя sudo su, новая оболочка получает свою среду от пользователя, который выдает команду — что может быть проблематично.

С помощью sudo -i вы получаете чистую корневую оболочку.

См. Специальные примечания по sudo и оболочкам.

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

0 ответ дан guntbert 11 August 2013 в 00:45 поделиться

sudo su только изменяет текущего пользователя на root. Настройки среды (например, PATH) остаются прежними.

sudo -i создает новую среду, как если бы root только что вошел в систему.

Разница более заметна, если вы используете других пользователей. После sudo su bob вы будете бобом, но там же. После sudo -i -u bob вы будете находиться в домашнем каталоге bob с бобом по умолчанию для bob и с запущенными bob .profile и любыми другими сценариями входа в систему.

См. man sudo для более подробной информации о том, что -i делает. К сожалению, man su не так много деталей.

Нашел версию man su (из login-1: 4.1.4.2 + svn3283-3ubuntu5.1), в которой сказано следующее:

$ PATH сброшен в соответствии с параметры /etc/ ENV_PATH или ENV_SUPATH (см. ниже);

$ IFS сбрасывается в «< пробел> < tab> < newline>», если он был установлен.

Обратите внимание, что поведение среды по умолчанию следующее:

Переменные среды $ HOME, $ SHELL, $ USER, $ LOGNAME, $ PATH и $ IFS сбрасываются.

Если —login не используется, среда копируется, за исключением переменных выше.

Если используется —login, переменные среды $ TERM, $ COLORTERM, $ DISPLAY и $ XAUTHORITY копируются, если они были установлены.

Другие среды могут быть установлены модулями PAM.

То, как и в какой степени sudo su изменит среду, зависит от вашего дистрибутива и настройки. Таким образом, sudo -i теоретически является более переносимым.

0 ответ дан OrangeDog 11 August 2013 в 00:45 поделиться

Подводные камни

Знание про sudo играет с новичками злую шутку. Каждый раз, когда они видят "странные" ошибки, то не пытаются разобраться, а пробуют запустить команду с sudo без параметров, то есть просто выполнить её от суперпользователя. Часто такой подход срабатывает, но он создаёт ещё больше проблем, чем решает.

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

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

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

~$ ls -la # Всё содержимое домашней директории принадлежит одному пользователю. # Сама директория пользователя принадлежит ему же, # а родительская директория принадлежит суперпользователю drwxr-xr-x+ 117 mokevnin staff 3744 Feb 19 15:55 . drwxr-xr-x 5 root admin 160 Oct 12 19:15 .. -r——— 1 mokevnin staff 7 Nov 21 2017 .CFUserTextEncoding -rw-r—r—@ 1 mokevnin staff 22532 Feb 8 00:04 .DS_Store

Дополнительные материалы

  1. sudo vs su

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Ошибки, сложный материал, вопросы > Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

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

Об обучении на Хекслете

  • Статья «Как учиться и справляться с негативными мыслями»
  • Статья «Ловушки обучения»
  • Статья «Сложные простые задачи по программированию»
  • Урок «Как эффективно учиться на Хекслете»
  • Вебинар «Как самостоятельно учиться»

Получение root-доступа в терминале

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

Введите «Su-».

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

Введите пароль root при появлении запроса

После ввода «Su-» будет предложено ввести пароль root.

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

Проверьте командную строку.

Когда вы вошли в систему как пользователь root, командная строка должна заканчиваться #вместо $

Введите команды, которые требуют root-доступа.

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

Команды Linux для управления файлами и папками

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

У Линукса много команд, предусмотренных на все случаи

Обратите внимание! Для освоения операционной системы Linux не обязательно анализировать записи на форумах или покупать учебники. Достаточно воспользоваться справочником кодов и опций терминала Линукс.

Команды Linux для управления файлами и папками

Как управлять директориями

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

Важно! Программы и инструменты доступны во всех версиях терминала Linux. Их не нужно загружать и устанавливать отдельно от ОС.

«Ls» для просмотра папок и их содержимого

Примеры команд:

  • «ls» — код, с помощью которого можно просматривать активные папки и их содержимое. Разработчики Linux добавили забавную фишку — нередко при быстрой печати пользователи ошибаются и вводят «-sl» вместо «-ls». В этом случае в терминале появится поезд «Steam Locomotive»;
  • «cat» показывает компоненты необходимого файла. Опция «-n» производит их нумерацию;
  • «cd» применяется для перехода из одной папки в другую. При нулевом вводе отправляет пользователя в корневой каталог;
  • «pwd» определяет активную директорию;
  • «mkdir» позволяет создать новую папку в активной директории;
  • «file» показывает свойства необходимого файла;
  • «cp» отвечает за копирование. С помощью этой команды можно копировать файлы и папки. Имеет опции -«r» (рекурсивное копирование) и «-a» (сохранение изменений);
  • «mv» применяется для переименовывания файлов и их дальнейшего перемещения;
  • «rm» отвечает за удаление компонентов. По умолчанию работает в режиме безвозвратного удаления. Включение опции «-r» позволяет отправить файл в корзину;
  • «ln» используется для создания ссылки на файл;
  • «chmod» подходит для систем с несколькими пользователями. Команда изменяет права допуска к файлу;
  • «chown» меняет владельца. Этой командой может воспользоваться только суперпользователь;
  • «find» и «locate» — команды, которые отвечают за поиск указанных файлов и программ. Их отличие состоит в том, что «locate» ищет в Updated (специальной утилите, которая производит сканирование операционной системы, обновляет список файлов Linux и баз данных). Для каждой команды существует гибкая система опций;
  • с помощью «help» Linux покажет всю информацию о встроенных командах;
  • «dd» — создание и преобразование копий компонентов системы;
  • «dir» для Linux позволяет посмотреть скрытые файлы и папки;
  • «mounth» включает систему;
  • «umounth» отключает систему;
  • «df» производит анализ жёстких дисков, выдавая отчёт о проделанной работе. Команда имеет большое количество опций, позволяющих структурировать и комбинировать полученные данные.
Команды Linux для управления файлами и папками

Важно! Две последние команды может использовать только суперпользователь.

Команда «Nano» позволяет войти в упрощённый режим консоли с подсказками внизу экрана

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

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

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

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

Читайте также:  Apple выпустила iOS 13.4.5 Public beta 1 для всех — что нового

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

[[email protected] ~]$ su Пароль: [[email protected] test]#

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

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

[[email protected] test]# exit exit [[email protected] ~]$

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

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

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

Были [[email protected] ~]$, стали [[email protected] ~]#. Грубо говоря стали пользователем 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.

[[email protected] ~]# id techlist_1 uid=1001(techlist_1) gid=1004(techlist_1) группы=1004(techlist_1) [[email protected] ~]# id techlist_2 uid=1002(techlist_2) gid=1005(techlist_2) группы=1005(techlist_2)

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

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

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

[[email protected] ~]# nano /etc/pam.d/su Находим следующую строку и расскомментируем ее, уберем знак #, в начале строки: #auth required pam_ use_uid auth required pam_ use_uid Сохраняем изменения и выходим.

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

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

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

[[email protected] ~]$ su Пароль: su: Доступ запрещен [[email protected] ~]$ su — Пароль: su: Доступ запрещен [[email protected] ~]$

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

Сборка программ из архива

Распаковывать архив можно из терминала, а можно при помощи графического интерфейса, например программой Ark или Менеджер архивов. Тут все зависит от того, как вам удобней. Для того что бы распаковать архив в терминале, нужно выполнить определенную команду. На примере с GParted такой командой будет:

tar xzf

Сборка программ из архива

Примечание, tar является утилитой командной строки для распаковки архивов. И так, затем переходим в папку с распакованной программой и смотрим какие там имеются файлы. Тут как раз имеются README:

Для наглядности я открою файл README в графической утилите Mousepad. Как вы можете заметить, в инструкции подробно прописано как устанавливать данную программу из исходников:

Для того что бы собрать данную программу, достаточно выполнить команды, которые прописаны в инструкции. Так как мы уже распаковали данный архив, пропускаем это шаг. Если вы не знаете как перейти в терминале в директорию программы, поясню. А если знаете, то пропустите данный шаг. Для того что бы перейти в терминале в нужную директорию, используется команда “cd“. Например, у вас папка с программой находится по адресу “Загрузки – папка с программой”, выполняем команду:

Читайте также:  Linux Mint — как установить и настроить компьютер на нём

cd Загрузки

Сборка программ из архива

После чего можно посмотреть что у нас имеется в данной директории введя команду “ls“, после чего снова вводим команду “cd” и переходим в нужную нам директорию. Например:

cd gparted-1.1.0

Теперь приступаем к сборке программы GParted. Для этого вводим команды которые написаны в файле README.

./configure make make install

Сборка программ из архива

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

После того как все необходимые зависимости были установлены, снова запускаем “./configure” и продолжаем компиляцию программы как описано выше. А именно, после запуска “./configure” запускаем “make”, а затем “sudo make install”.

Закрыть программу утилитой из терминала

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

Открываем терминал и ставим маленькую утилиту htop стандартной командой

sudo apt install htop

Закрыть программу утилитой из терминала

После установки набираем команду

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

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

Выбираем нажатием клавиш, что мы хотим с этим процессом сделать.

Нужные клавиши от F1 до F10 с действиями подписаны в нижней строке

Если закрываем программу, то выбираем F9

Закрыть программу утилитой из терминала

Затем нас спросят подтвердить наше действие (send) или отказаться, если передумали (Cancel). Нажимаем Enter для завершения начатого или Esc если передумали.

Закрыть программу командой из терминала

Можно закрыть программу или приложение просто командой из терминала.

Для этого нам нужно узнать идентификационный номер процесса.

Набираем команду в терминале

ps aux | grep имя_приложения

Закрыть программу утилитой из терминала

Нужный нам номер — вторая колонка.

Теперь завершаем процесс командой

sudo kill -TERM pid-приложения

Где pid — приложения — уникальный номер запущенного процесса, приложения

Если у кого есть, что добавить, оставляйте комментарии, делитесь информацией.

Всем Удачи!

Закрыть программу утилитой из терминала

Подписаться Уведомить о новых последующих комментариях новых ответах на мои комментарии {} [+] Имя* Email* Веб-сайт {} [+] Имя* Email* Веб-сайт Комментарий Межтекстовые Отзывы Посмотреть все комментарии

Использование sudo, в том числе с внутренними командами Bash

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

sudo КОМАНДА

Но что если нам нужно дописать строку в файл требующих повышенных привилегий примерно следующей командой:

sudo echo «что-нибудь» >> /etc/файл_требующий_повышенных_привилегий

Команда должна выполняться с повышенными привилегиями, что должно дать права на запись в файл. Но в этом случае ни > , ни >> не получится использовать, в том числе как root. И будет выведена ошибка вида:

bash: /etc/file: Отказано в доступе

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

sudo su —

Либо с помощью команды tee. Используйте её с опциями —append или -a — это важно, без этих опций файл будет полностью перезаписан. Пример:

echo ‘новая строка’ | sudo tee —append /etc/apt/

Приведённая команда допишет новую строку в существующий файл.

Но особенность команды tee в том, что она не только допишет файл, но ещё и выведет добавленную строку в консоль. Если вы не хотите, чтобы данные вновь возвращались в консоль, то сделайте редирект вывода на /dev/null.

Пример:

echo ‘новая строка’ | sudo tee —append /etc/apt/ > /dev/null

Это будет работать аналогичным образом, но на экран не будет выведена ‘новая строка’.

Ещё один вариант использования echo для записи или добавления в файл от имени администратора:

sudo sh -c «echo ‘something’ >> /etc/privilegedfile»

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

Что такое sudo

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