Права суперпользователя root в linux: полный обзор

Настройка

Defaults

содержит список опций, которые можно использовать с командой в файле .

Смотрите для более подробной информации, например о настройке таймаутов.

Просмотр текущих настроек

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

Использование visudo

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

Важно:

Крайне важно, чтобы файл был без синтаксических ошибок! Любая ошибка делает sudo неработоспособным
Всегда редактируйте его только с помощью visudo для предотвращения ошибок.
Из : Обратите внимание, что это дыра в безопасности, поскольку позволяет пользователю запускать любую программу, какую он захочет, просто прописав её в VISUAL или EDITOR.. visudo использует vi в качестве текстового редактора по умолчанию
Пакет скомпилирован с опцией по умолчанию и использует переменные и

не используется, если задана переменная .

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

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

# EDITOR=nano visudo

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

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

# Сброс окружения
Defaults      env_reset
# Установка ограниченного варианта nano в качестве редактора по умолчанию и запрет visudo использовать EDITOR/VISUAL.
Defaults      editor=/usr/bin/rnano, !env_editor

Примеры настроек

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

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

Разрешить пользователю выполнять все команды от любого пользователя, но только на машине с определенным названием хоста:

имя_пользователя   название_хоста=(ALL:ALL) ALL

Предоставить членам группы доступ к sudo:

%wheel      ALL=(ALL:ALL) ALL

Совет: Для добавления новых администраторов рекомендуется включить доступ к sudo для группы и , поскольку по умолчанию рассматривает членов группы как администраторов. Если пользователь не является членом группы , программы, использующие Polkit, могут запросить аутентификацию с использованием пароля root вместо пароля пользователя.

Чтобы не спрашивать пароль у пользователя:

Важно: Это позволит любому процессу, запущенному под вашим именем пользователя, использовать sudo, не спрашивая разрешения.

Defaults:имя_пользователя      !authenticate

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

имя_пользователя название_хоста=/usr/bin/halt,/usr/bin/poweroff,/usr/bin/reboot,/usr/bin/pacman -Syu

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

Разрешить выполнять конкретно определённые команды только для пользователя на определенном хосте и без пароля:

имя_пользователя название_хоста= NOPASSWD: /usr/bin/halt,/usr/bin/poweroff,/usr/bin/reboot,/usr/bin/pacman -Syu

Подробный пример для доступен в . Также смотрите для получения более подробной информации.

Права доступа к файлам sudoers по умолчанию

Файл должен иметь владельца root и группу root (0). Права доступа всегда должны быть установлены как (0440). Эти права установлены по умолчанию, однако если вы случайно измените их, они должны быть немедленно изменены обратно, иначе sudo не будет работать.

# chown -c root:root /etc/sudoers
# chmod -c 0440 /etc/sudoers

Присвоение пользователю привилегий Sudo

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

В системе с группой администрирования общего назначения, такой как система Ubuntu в этом учебном модуле, проще всего будет добавить данного пользователя в эту группу.

Например, в Ubuntu 20.04 группа имеет полные привилегии администратора. Добавляя пользователя в эту группу, мы предоставляем ему такие же привилегии:

Также можно использовать команду :

Обе команды выполняют одно и то же.

В CentOS эта группа обычно называется , а не :

Также можно использовать :

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

/etc/sudoers

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

Существует более современный способ повышения пользовательских прав с помощью команды sudo (substitute user and do — подменить пользователя и выполнить).

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

Sudo работает следующим образом, перед командой которую необходимо выполнить, нужно добавить sudo, например:

От имени root:
yum install -y wget

При помощи sudo:
sudo yum install -y wget

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

$ sudo yum install -y wget
 password for test: 
test is not in the sudoers file.  This incident will be reported.

При попытке выполнить команду sudo, от имени пользователя test, выдается ответ что такого пользователя в файле sudoers не обнаружено. О событии создается запись в лог файле, также высылается электронное письмо root-пользователю с уведомлением о случившемся.

From root@test2.localdomain  Sat Feb 11 20:19:12 2017
Return-Path: <root@test2.localdomain>
X-Original-To: root
Delivered-To: root@test2.localdomain
Received: by test2.localdomain (Postfix, from userid 0)
        id CD2AF8051BC; Sat, 11 Feb 2017 20:19:12 +0300 (MSK)
To: root@test2.localdomain
From: test@test2.localdomain
Auto-Submitted: auto-generated
Subject: *** SECURITY information for test2 ***
Message-Id: <20170211171912.CD2AF8051BC@test2.localdomain>
Date: Sat, 11 Feb 2017 20:19:12 +0300 (MSK)

test2 : Feb 11 20:19:12 : test : user NOT in sudoers ; TTY=pts/0 ; PWD=/home/test ; USER=root ; COMMAND=/bin/yum install wget

Для того чтобы пользователь мог выполнять sudo, его надо внести в файл sudoers. Сделать это можно двумя способами.

Первый способ — внесение имени пользователя непосредственно в сам файл /etc/sudoers. Для изменения файла sudoers, требуется обладать правами root.

nano /etc/sudoers
 
Находим строку:
root    ALL=(ALL)	ALL
 
Добавляем под нее имя пользователя, которому будет разрешен доступ к sudo:
root    ALL=(ALL)	ALL
test    ALL=(ALL)	ALL
 
Сохраняем и выходим.

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

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

Вносим пользователя в группу wheel:
usermod -a -G wheel techlist_1
 
Проверяем:
id techlist_1
uid=1001(techlist_1) gid=1004(techlist_1) группы=1004(techlist_1),10(wheel)
 
Перезагружаем систему:
reboot

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

Для того чтобы полностью сменить окружение пользователя на окружение root, используется команда sudo -i, что равносильно использованию команды su —

$ sudo -i
 password for test: 
# 

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

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

Отключить ввод пароля для пользователей принадлежащих к группе wheel:

Открываем для внесения изменений:
nano /etc/sudoers
 
Находим строку:
# %wheel        ALL=(ALL)	NOPASSWD: ALL
 
Раскомментировать строку:
%wheel        ALL=(ALL)	NOPASSWD: ALL
 
 
Сохраняем изменения и выходим.

Отключить ввод пароля для пользователей добавленных вручную:

Открываем для внесения изменений:
nano /etc/sudoers
 
Находим строку с нужным пользователем:
test    ALL=(ALL)     ALL
 
Изменяем ее:
test    ALL=(ALL)     NOPASSWD: ALL
 
Сохраняем изменения и выходим.

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

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

Посмотреть руководство sudo:
man sudoers
 
Выйти из руководства:
q
 
Посмотреть список дополнительных опций команды:
sudo -h

Graphical sudo

You should never use normal sudo to start graphical applications as root. Using sudo with graphical apps has the potential to corrupt your environment by allowing root to take ownership of and/or change permissions on critical files that you must own. The forums frequently see panicked requests for help from users who can no longer log in after running graphical applications under sudo.

Please note that many websites and old threads advise the use of gksu. However, such search results are obsolete. gksudo has not been updated for years and is not even available in Bionic (18.04) and higher. gksu has been replaced by pkexec, but even pkexec is being deprecated by the mainline Ubuntu developers. They have taken the position that file manipulation and editing under root should be restricted to the command line.

We can only surmise what the motives were behind this decision: perhaps there are just too many users who run into problems running graphical apps as root. In any case, running graphical apps as root now requires workarounds and additional steps.

Flavour-specific workarounds

There are a number of flavour-specific options for running graphical applications as root:

  • You can use pkexec on those flavours that support this option. As of 18.04, only Xubuntu supports this option by default, as shown in the following examples:

    pkexec thunar
    pkexec mousepad /etc/fstab

  • By default, Kubuntu allows easy access to a root file manager: KDE Launcher → Computer → Root-Dolphin

    From there: (→ edit file) will open up a root instance of Kate.

  • Mainline Ubuntu and Gnome use Nautilus as their file manager. Any flavour running Nautilus will allow you to install the package nautilus-admin which will add two python extensions to Nautilus. These extensions add options that allow root access: Open as Administrator and Edit as Administrator

    It is also possible to install the missing Policykit files for both Nautilus and Gedit. See this site for instructions and links. A knowledgeable user could build further Policykit files for alternate file managers and editors by using the linked files as templates. They are simple XML files that can be edited with a standard text editor.

General workarounds

The following methods will work on all flavours:

  • Use the command line. Simple text editors like nano are quite easy to learn. If you prefer a quasi-graphical file manager, install Midnight Commander. Both of these apps run under sudo with no problems. Examples:

    sudo mc
    sudo nano /etc/fstab

  • Notwithstanding the earlier warning, it is possible to use sudo with graphical apps provided you add the -H flag. This flag is critical: it properly sets root to its own environment instead of improperly inheriting the user’s environment. Use of the -H flag is mandatory. Failing to use this flag may corrupt critical system files and prevent you from logging in.

    With sudo -H almost any graphical app can be launched under root within any ‘buntu flavour. This includes each flavour’s default graphical editor and file manager.
    An appreciable danger with sudo -H is that the -H flag is easy to forget. And all it takes is one omission for the damage to be done.

Команда 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 сервера.

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

Открытые программы с рутом — Gksu

Задолго до того, как инструмент Pkexec занял его место, появился Gksu. Он работает так же, как Pkexec, но разработчики дистрибутива Linux решили отказаться от него, так как он также не работает. Тем не менее, если вам не нравится использовать Pkexec и вам нужен способ запускать программы с правами root, он все равно работает.

К сожалению, Gksu не установлен во многих репозиториях программного обеспечения современных дистрибутивов Linux, так как он не так часто используется. На данный момент Debian 7-9 поддерживает его, OpenSUSE LEAP (42.3 и 15.0) и Tumbleweed поддерживают его. Ubuntu 16.04 LTS тоже.

Чтобы установить его, откройте терминал и введите команды, соответствующие вашей операционной системе.

OpenSUSE LEAP 15.0

sudo zypper addrepo https://widehat.opensuse.org/opensuse/repositories/GNOME:/Apps/openSUSE_Leap_15.0/ gnome-apps

sudo zypper install gksu

OpenSUSE LEAP 42.3

sudo zypper addrepo https://widehat.opensuse.org/opensuse/repositories/GNOME:/Apps/openSUSE_Leap_42.3/ gnome-apps
sudo zypper install gksu

OpenSUSE Tumbleweed

sudo zypper addrepo https://widehat.opensuse.org/opensuse/repositories/GNOME:/Apps/openSUSE_Factory/ gnome-apps

sudo zypper install gksu

Когда приложение Gksu настроено в вашей системе Linux, оно должно быть готово к использованию. Чтобы запустить программу как Root, нажмите Alt + F2 на рабочем столе. Появится панель запуска. На панели напишите gksu, а затем программу, которую хотите запустить. Например, чтобы запустить файловый менеджер XFCE4, вы должны:

gksu thunar

Чтобы запустить любое приложение с помощью Gksu, следуйте синтаксису командной строки ниже.

gksu programname

Вы также можете запустить приложение прямо из терминала как Root с тем же синтаксисом.

Изменение файла Sudoers

Файл откроется в выбранном вами текстовом редакторе.

Я скопировал и вставил файл с сервера Ubuntu 18.04 с удаленными комментариями. Файл CentOS содержит намного больше строк, и некоторые из них не будут обсуждаться в этом руководстве.

/etc/sudoers

Давайте посмотрим, что делают эти строки.

Строки по умолчанию

Первая строка Defaults env_reset сбрасывает среду терминала для удаления переменных пользователя. Эта мера безопасности используется для сброса потенциально опасных переменных среды в сеансе .

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

Третья строка, начинающаяся с “Defaults secure_path=…”, задает переменную (места в файловой системе, где операционная система будет искать приложения), которая будет использоваться для операций . Это предотвращает использование пользовательских путей, которые могут быть вредоносными.

Строки пользовательских привилегий

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

  • Первое поле показывает имя пользователя, которое правило будет применять к (root).

  • Первое “ALL” означает, что данное правило применяется ко всем хостам.

  • Данное “ALL” означает, что пользователь root может запускать команды от лица всех пользователей.

  • Данное “ALL” означает, что пользователь root может запускать команды от лица всех групп.

  • Последнее “ALL” означает, что данные правила применяются всем командам.

Это означает, что наш пользователь root сможет выполнять любые команды с помощью после ввода пароля.

Строки групповых привилегий

Следующие две строки похожи на строки привилегий пользователя, но задают правила для групп.

Имена, начинающиеся с , означают названия групп.

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

Строка Included /etc/sudoers.d

Последняя строка выглядит как комментарий:

/etc/sudoers

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

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

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

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

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

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

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