Чтобы произвести сколь-нибудь значимые изменения в настройках операционной системы своего сервера, администратор должен обладать доступом к этой самой системе с соответствующими правами. Это относится ко всем операционным системам. В Linux учётная запись, которая может всё, это – root. Эту учётную запись ещё называют суперпользователь. И для администрирования Linux-системы необходимо либо использовать учётную запись root’а, либо получить его полномочия при работе со своей учётной записью.
В первом случае администратор должен подключаться с паролем root’а напрямую или используя команду su . Во втором – пароль root’а не нужен. Для получения привилегий суперпользователя потребуется команда sudo .
Что такое sudo?
Sudo – это утилита для операционных систем семейства Linux, позволяющая пользователю запускать программы с привилегиями другой учётной записи, как правило, суперпользователя. В части запуска команд от имени root’а sudo является альтернативой утилите su . Правда, в отличие от su , которая запускает оболочку root’а и предоставляет суперполномочия всем дальнейшим инструкциям, sudo предоставляет только временное повышение привилегий. Таким образом, включая полномочия root’а только когда это действительно необходимо, применение команды sudo снижает вероятность того, что опечатка или ошибка в вызываемой команде причинит какой-нибудь вред системе.
Slash Sudo Is The Best Thing in Existence
Непривилегированная учётная запись должна иметь некоторые полномочия в системе для того, чтобы иметь возможность воспользоваться командой sudo . Если быть более точным, такой пользователь должен состоять в определённой группе безопасности. Для добавления пользователя в данную группу в Ubuntu/Debian применяется следующая команда:
# usermod -aG sudo your-user
Для CentOs такая команда имеет вид:
# usermod -a -G wheel your-user
Инструкции, предназначенные для добавления учётным записям дополнительных прав, следует запускать от имени root’а, либо пользователя уже владеющего правами на запуск sudo .
Использование sudo
Чтобы выполнять команды с привилегиями суперпользователя, непривилегированный пользователь должен предварить свою команду утилитой sudo :
$ sudo command-you-want-to-run
Например, запуск команды для обновления списка доступных пакетов в Debian из-под учётной записи не имеющей полномочий root’а выглядит как:
$ sudo apt update
Может получиться так, что на вашем сервере утилита sudo отсутствует в дистрибутиве операционной системы.
Поэтому, для установки пакета sudo , необходимо залогиниться в систему root’ом и запустить следующие команды:
# apt update # apt install sudo
Чтобы не набирать sudo в каждой команде, можно при помощи sudo авторизоваться под именем другой учётной записи. Для этого применяется опция -i :
$ sudo -i
Такая команда залогинит вас под пользователем root. Чтобы авторизоваться в системе учётной записью, например, user2, команда должна выглядеть так:
$ sudo -i -u user2
Чтобы посмотреть текущие настройки sudo , используйте команду с опцией -l . Вывод будет содержать информацию по разрешённым к запуску командам. В данном случае нашему пользователю разрешено всё:
Конфигурация sudo содержится в файле /etc/sudoers . В этом файле можно изменить такие настройки как, например, какой учётной записи можно запускать команды от имени суперпользователя, или какие команды может выполнять пользователь, и так далее. Для внесения изменений в конфигурационный файл наберите следующую команду, подключившись к системе root’ом:
# visudo
Заключение
Вкратце, мы ознакомились с весьма полезной и популярной в Linux-системах утилитой sudo . Её функционал и возможности намного шире, чем то, что описано в данной статье. И если вам нужна более подробная информация по настройке и использованию команды, то добро пожаловать в другие разделы нашего справочника.
Источник: ruvds.com
Администратор в 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 наберите в терминале
sudo -K
Кроме того, часто встречаются ошибки, связанные с каналами в 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: /путь/к/программе
Есть и другие варианты решения проблемы, небольшое обсуждение здесь.
Источник: help.ubuntu.ru
Права пользователей в Linux. Команды sudo и su
Linux — сложная система, поддерживающая многопользовательский режим. Это утверждение означает, что в режиме реального времени одновременно параллельно с системой может работать множество человек, и каждый из них способен запустить несколько приложений. В Linux настроить права пользователя совсем несложно.
Root обладает в указанной системе максимальными полномочиями, и она полностью подвластна ему, — любая его команда будет выполнена сразу. Поэтому работать таким доступом следует с осторожностью. Если вы арендуете виртуальный сервер Linux – используйте эту инструкцию. Чтобы не допустить ошибки необходимо изначально знать, как посмотреть права пользователя Linux.
Рекомендуется работать под стандартным пользователем, а максимальные привилегии получать только тогда, когда это действительно нужно, например, для выполнения конфигурации сервера, для перезапуска служб, для установки ПО. Для временного получения в Linux права пользователя root применяются сопутствующие команды sudo и su, рассмотренные в этой статье.
Команда sudo
Sudo позволяет клиенту задать практически любую команду с доступами, разрешениями и привилегиями root. Применять ее очень просто:
Если вам необходимо изменить файл /etc/apt/sources.list:
sudo nano /etc/apt/sources.list
Если задать аналогичную команду, но без sudo (просто: nano /etc/apt/sources.list), текстовый редактор запустит файл, но сохранить внесенные изменения вы при этом не сможете, поскольку для завершения задачи не хватит полномочий.
Перед самым выполнением команды она обязательно затребует у вас личный пароль:
sudo nano /etc/apt/sources.list
Password:
Нужно ввести пароль, применяемый для входа в систему, но он должен отличаться от пароля root.
Использовать sudo могут не все, а только профили, внесенные в файл /etc/sudoers. Администратору системы позволено редактировать этот файл с помощью visudo.
На платформе Xelent виртуальные серверы (даже на базе Ubuntu) создаются с активной записью root. Следовательно, если вы хотите использовать sudo для обычного пользователя, то сначала нужно его создать, а затем добавить в /etc/sudoers. Далее рассмотрен весь процесс подробно — с момента создания на примере Ubuntu 18.04.
Первым делом добавим пользователя через adduser (рис. 1):
Команда добавит den и установит его пароль. Узнать права пользователя Linux с этим логином можно будет в любой момент.
Рис. 1. Создание пользователя в Ubuntu 18.04
В Ubuntu adduser не только добавляет в Linux права пользователя, но и создает пароль для него. В прочих дистрибутивах вам понадобится две команды — одна для создания новой пользовательской учетной записи, а вторая — для задания его пароля:
adduser den
passwd den
Затем den нужно добавить в файл /etc/sudoers для редактирования которого предназначена visudo. По умолчанию она использует текстовый редактор vi, который очень неудобен и понадобится еще одна статья, объясняющая как с ним работать. Гораздо проще установить переменную окружения EDITOR и задать более удобный текстовый редактор, например, nano.
Узнаем, где находится текстовый редактор nano:
which nano
/bin/nano
Установим переменную окружения:
Рис. 2. Установка переменной окружения EDITOR
Если облака для вас
не просто теория
Широкий спектр услуг
по выделенным северам
и мультиклауд-решениям
Конфигурация VPS и бесплатный тест уже через 2 минуты
Организация вашей IT-инфраструктуры на основе мультиклауд-решения
После этого можно выполнить visudo и дать права пользователю Linux, отредактировав необходимый файл, добавив в него den. Добавьте в него строчку:
den ALL=(ALL:ALL) ALL
Данная строка объясняет, что den можно выполнять со всех (первый ALL) терминалов, работая как любой (второй ALL) все команды (третий ALL) с максимальными правами. Конечно, его можно и более ограничить, например:
den ALL= /sbin/poweroff
Эта запись означает, что вышло дать права пользователю Linux den и он может с любого терминала вводить команду завершения работы. Руководств по файлу sudoers в Интернете предостаточно, поэтому вы без проблем найдете дополнительные примеры ограничения прав через этот файл, чтобы настроить сервер так, как вам нужно.
Рис. 3. Редактирование /etc/sudoers
Для сохранения изменений нажмите сначала Ctrl + O, а затем Ctrl + X, чтобы выйти из редактора.
Теперь проверим, все ли у нас получилось. Превратимся в den:
Попытаемся с максимальными правами выполнить любую команду, например, ls:
Команда sudo запросит пароль den — введите его. Если бы мы допустили ошибку при настройке, sudo сообщила бы, что он не имеет права ее использовать. А поскольку она запросила пароль, мы все сделали правильно.
Рис. 4. Sudo в действии
Каждую команду, которая требует максимальных прав, вам придется выполнять через sudo. Порой нужно выполнить продолжительную настройку и вводить каждый раз sudo не хочется. В этом случае можно запустить командный интерпретатор bash через sudo и вы получите полноценную консоль root. Вот только не забудьте по окончанию настройки ввести exit:
sudo bash
выполняем настройку
exit
Через sudo у вас не получится использовать перенаправление задач категории ввода/вывода, то есть команда вида sudo ls /etc > /root/somefile не сработает. Для этого требуется ввести sudo bash и использовать систему как обычно.
Каждая команда, которая была введена в систему непосредственно с помощью sudo, фиксируется в учетном журнале, находящемся по адресу /var/log/auth.log, и у вас сохранится история введенных задач с полномочиями root, а вот при работе под администратором root журнал вовсе не ведется. Кроме того, если пойдет не так, можно будет понять, что случилось, изучив данный журнал. Посмотрите на рис. 5. На нем видно, что den вводил ls через sudo.
Рис. 5. Журнал auth.log
Команда su
Su дает доступ к консоли с полными правами администратора root любому (даже если он изначально не был вписан в файл /etc/sudoers). Единственное условие — он должен иметь пароль root. Понятно, что в большинстве случаев ним будет сам root, — не станете же вы всем доверять свой пароль? Поэтому su предназначена, в первую очередь, для администратора системы, в Linux права пользователя у него не ограничены, а sudo — для остальных, им тоже иногда требуются права root (чтобы они меньше отвлекали администратора от своей работы).
Использовать su просто:
su
После этого нужно будет подтвердить права root пользователя Linux и ввести пароль, далее вы сможете работать в консоли, как обычно. Использовать su удобнее, чем sudo, потому что нет необходимости вводить su непосредственно перед каждой командой, требующей выполнения с правами root.
Чтобы закрыть сессию su нужно или ввести слово exit, или закрыть окно терминала.
С помощью su можно работать от имени любого пользователя. Ранее было показано, как мы с помощью su den смогли выполнять команды от имени пользователя den.
Популярные услуги
Linux сервер
Высокопроизводительные VPS сервера Linux на без KVM-виртуализации идеально подходят для крупных интернет-проектов. В сочетании с этой операционной системой серверные компьютеры демонстрируют хорошую производительность, а SSD хранилища данных способствуют увеличению их быстродействия. У нас вы сможете взять в аренду VPS и VDS Linux сервера.
Аренда выделенного сервера в России
Аренда сервера и СХД необходимой производительности. Все оборудование размещается в собственном отказоустойчивом ЦОДе с зарезервированными системами энергоснабжения, охлаждения и каналами связи.
Источник: www.xelent.ru