Как дать права sudo пользователю linux
Перейти к содержимому

Как дать права sudo пользователю linux

  • автор:

How to add Users to Sudoers File in Ubuntu

Farzana Anjum

S UDO is a command-line program that allows trusted users to execute commands as root or another user.

sudo allows you to run a Unix command as a different user. Using /etc/sudoers file to confirm what privileges are available to you, this command effectively elevates your access rights, thus allowing you to run commands and access files that would otherwise be not available to you.

How sudo command works

The sudoers file is a text file that lives at “/etc/sudoers.” It controls how sudo works on your machine. You are probably familiar with sudo’s primary role of elevating your current account’s privileges to root, the superuser on all Unix-based systems.

The real and effective user id (uid) and group id (gid) are set to match those of the target user as specified in /etc/sudoers file (the safest way to change this file is to use the visudo command — check out the visudo tutorial). The way you use sudo is simple enough: you run this command and specify a command-line you’d like to run with the privileges of a different user. Before the requested command is run, you are asked to confirm your identify by providing your user password.

The sudoers file is located at /etc/sudoers . And you should not edit it directly, you need to use the visudo command.

VISUDO

Now mainly the VISUDO file is used for adding the users in sudoers file.

visudo is a tool for safely updating the /etc/sudoers file, found in most Linux systems (Ubuntu for example). This is the file that is required for allowing regular users to run commands with superuser privileges — using sudo command.

Here’s what the Ubuntu man page says about it, I think it’s a great summary:

visudo edits the sudoers file in a safe fashion, analogous to vipw. visudo locks the sudoers file against multiple simultaneous edits, provides basic sanity checks, and checks for parse errors. If the sudoers file is currently being edited you will receive a message to try again later.

Attention: due to the sensitive content of the /etc/sudoers file, you can only run visudo as root.

Using visudo to edit the /etc/sudoers

This is the default behavior of the visudo command: simply run it without any parameters, and it will open the contents of the /etc/sudoers file in a vi editor, allow you to edit it, and will then apply the changes.

The reason I’m highlighting the fact of applying the changes is because vi session will not be editing the actual /etc/sudoers file, but a temporary copy of it created by visudo. After you make the changes and exit the vi, visudo will do the syntax checks on the file before replacing the actual /etc/sudoers file.

Hint: if you’re using a different text editor, you can easily override it by setting the EDITOR variable in your shell, visudo is intelligent enough to respect it and use the specified editor.

Using visudo to check the /etc/sudoers syntax

Sometimes you don’t want to update the file using this command but would like to verify that the syntax of /etc/sudoers is correct. That’s when the -c option for visudo comes in:

We are going to use visudo file to add users to that file.

visudo is a special tool in Unix/Linux for safely updating the /etc/sudoers file, used by the sudo command for providing and managing privileged access.

for safely updating the /etc/sudoers file, found in most Linux systems (Ubuntu for example).

Since /etc/sudoers file defines rules for (sometimes passwordless) access to privileged access, you can only run visudo as root.

How visudo command works

You don’t need to specify any command line options. Just become root and run the command. You’ll be shown your default text editor window with the /etc/sudoers file.

Just run the below command:

After running this above command you will get the below file, in this just add users.

You can see “User privilege specification”, the only root is added there down to root line you can add many users as same as root.

After adding users in visudo file “ctlr+x” and enter “y”it will save the visudo file. Now you can use Sudo. Like installing libraries, updating, etc.

If you inspect the screenshot carefully, you’ll notice the first important reason visudo command is so useful: it doesn’t edit the /etc/sudoers file directly. Instead, it makes a copy of it, called /etc/sudoers.tmp, and allows you to edit it. This means that if something happens to your editing session (server crashes, power goes, connection to the remote server gets broken), there is no risk of leaving your server in a random security state /etc/sudoers wise.

Once you finish editing, visudo will perform a number of checks on the resulting /etc/sudoers.tmp file before appying its changes into /etc/sudoers file. If an issue is found, you’ll get the message about it after you save the file and exit your text editor:

Just press Enter to see the options:

Most likely you’ll want to press e to continue editing the file. But if you can’t find what’s wrong (it may well be that /etc/sudoers was broken by someone else before you, because — you guessed it — they edited file manually instead of using visudo) — if that’s the case, you may just press x to exit and to investigate the /etc/sudoers file more.

Conclusion:

Granting sudo access to a user in Ubuntu is a simple task, all you have to do is to add the users to the “visudo” file.

How to Use Sudo and the Sudoers File

The sudo command allows non root users to run other Linux commands that would normally require super user privileges, while the sudoers file instructs the system how to handle the sudo command. In this tutorial, we’ll show you all the sudo command basics and how to edit the sudoers file.

Understanding Sudo

To show how sudo works, first access your VPS through SSH. If you’re having trouble, check out the PuTTY tutorial.

By default, the root user does not need to use the sudo prefix. They already have all the possible privileges. Meanwhile, if a non-root user wants to add another user, they would need to add the sudo prefix to the useradd command, like this:

If the user doesn’t use the sudo prefix, they will receive a Permission denied output.

The Sudoers File

The sudo command is configured through a file located in /etc/ called sudoers.

Through the sudo command you provide administrative level privileges to regular users. Normally the first user you create while installing Ubuntu has sudo rights. In a VPS environment that is the default root user. You can configure other users to also be able to run the sudo command. That can be done by editing sudoers.

Important! Note that errors or bad syntax on your sudoers file may result in locking out all users on your distribution.

Sudoers File Syntax

You can open the file with your preferred text editor. We’ll use vi:

Our VPS’ file looks like this:

An example of the linux sodoers file

Let’s look at some of the formats and rules to follow when editing sudoers:

  • All lines starting with # are comments
  • root ALL=(ALL:ALL) ALL – this line means that the root user has unlimited privileges and can run any command on the system
  • %admin ALL=(ALL) ALL – the % sign specifies a group. Anyone in the admin group has the same privileges as of root user
  • %sudo ALL=(ALL:ALL) ALL – all users in the sudo group have the privileges to run any command

Another line of interest is #includedir /etc/sudoers.d, this means we can add configurations to the file sudoers.d and link it here.

Editing the Sudoers File

To edit /etc/sudoers file, use following command:

It is recommended to use visudo to edit the sudoers file. Visudo makes sure that sudoers is edited by one user at a time and provides necessary syntax checks.

To see which users are in the sudo group we can use a grep command:

This will output a list of user names.

To add a user called bill to the sudo group, we use the adduser command in the command line, like so:

If we use the grep command to check who is in the group, we’ll see the username bill.

If you want to give anyone root privileges just add them to sudo.

To remove a user from sudo:

The deluser command will remove bill from the sudo group.

Now the user bill can no longer perform actions that require sudo privileges.

Use the Sudoers File to Grant Specific Privileges

What if we want bill to be able to run only specific kinds of commands with sudo privileges, like networking?

To do so we create a configuration file in /etc/sudoers.d/ called networking.

Use the following command to create the file:

Add following text in the file:

Then run the command:

What we have done in the above file is create a netadmin group. Users in the netadmin group can run commands specified in NETALL. NETALL in turn include all commands under CAPTURE and SERVERS aliases. The command tcpdump is under CAPTURE alias i.e. /usr/sbin/tcpdump.

Next we add user bill to the netadmin group:

Now the user bill will be able to run the tcpdump command along with other networking related commands.

Conclusion

If you’re working with multiple users, understanding the sudo command and the sudoers file is an absolute must. In this tutorial, you learned all the basics to take control of your system’s privileges!

Редактирование файла Sudoers

Редактирование файла Sudoers

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

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

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

Мы выполним эти действия на сервере Ubuntu 20.04, но данная процедура будет выглядеть примерно так же и на других современных дистрибутивах Linux, таких как Debian и CentOS.

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

Примечание. В этом учебном модуле подробно рассказывается об эскалации прав и о файле sudoers . Если вы просто хотите предоставить пользователю права sudo , воспользуйтесь нашими краткими учебными модулями Создание нового пользователя с правами Sudo для Ubuntu и CentOS.

Получение привилегий root

Существует три способа получить привилегии root, различающиеся по сложности.

Войдите в систему как пользователь Root

Самый простой и удобный способ получить привилегии root — просто войти на сервер как пользователь root.

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

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

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

Использование su для получения прав root

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

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

Для этого можно использовать команду su (substitute user) для замены пользователя. Чтобы получить привилегии root, введите:

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

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

Использование sudo для выполнения команд от имени пользователя root

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

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

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

В связи с вопросами безопасности доступ sudo не предоставляется пользователям по умолчанию, и его необходимо настроить перед использованием. Ознакомьтесь с нашими краткими руководствами Создание нового пользователя с привилегиями Sudo для Ubuntu и CentOS, чтобы научиться настраивать нового пользователя с правами sudo .

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

Что такое Visudo?

Команда sudo настраивается с помощью файла, расположенного в каталоге /etc/sudoers .

Предупреждение. Никогда не редактируйте этот файл в обычном текстовом редакторе! Всегда используйте для этой цели только команду visudo !

Неправильный синтаксис файла /etc/sudoers может нарушить работу системы и сделать невозможным получение повышенного уровня привилегий, и поэтому очень важно использовать для его редактирования команду visudo .

Команда visudo открывает текстовый редактор обычным образом, но проверяет синтаксис файла при его сохранении. Это не даст ошибкам конфигурации возможности блокировать операции sudo , что может быть единственным способом получить привилегии root.

Обычно visudo открывает файл /etc/sudoers в текстовом редакторе vi . Однако в Ubuntu команда visudo настроена на использование текстового редактора nano .

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

Выберите число, соответствующее желаемому варианту выбора.

В CentOS для изменения этого значения можно добавить следующую строку в

Исходный файл для внесения изменений:

После настройки visudo выполните эту команду для доступа к файлу /etc/sudoers :

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

и не содержит символа . , также считывается и добавляется в конфигурацию sudo .

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

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

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

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

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

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

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

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

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

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

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

Настройка персонализированных правил

Мы познакомились с общим синтаксисом файла, а теперь попробуем создать новые правила.

Создание псевдонимов

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

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

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

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

Мы можем дать членам группы GROUPTHREE разрешение на выключение и перезагрузку системы, создав псевдоним команды и используя его в правиле для GROUPTHREE :

Мы создадим псевдоним команды с именем POWER , который будет содержать команды выключения и перезагрузки системы. Затем мы дадим членам группы GROUPTHREE разрешение на выполнение этих команд.

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

Это позволит любому участнику группы GROUPONE выполнять команды от имени пользователя www-data или пользователя apache .

Необходимо помнить, что в случае конфликта правил более поздние правила имеют приоритет перед более ранними.

Фиксация правил

Есть ряд способов, которые позволяют более точно контролировать реакцию sudo на вызов.

Команда updatedb , связанная с пакетом mlocate , относительно безобидна при ее выполнении в системе с одним пользователем. Если мы хотим разрешить пользователям выполнять ее с привилегиями root без ввода пароля, мы можем создать правило следующего вида:

NOPASSWD — это свойство, означающее, что пароль не запрашивается. У него есть сопутствующее свойство PASSWD , которое используется по умолчанию и требует ввода пароля. Данное свойство актуальной для остальной части строки, если его действие не переопределяется дублирующим тегом в этой же строке.

Например, мы можем использовать следующую строку:

Также полезно свойство NOEXEC , которое можно использовать для предотвращения опасного поведения некоторых программ.

Например, некоторые программы, такие как less , могут активировать другие команды, вводя их через свой интерфейс:

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

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

Прочая информация

При работе с sudo может быть полезна следующая информация.

Если вы зададите в файле конфигурации пользователя или группу, от имени которых выполняются команды, вы можете выполнять команды от их имени, используя флаги -u и -g соответственно:

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

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

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

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

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

Она выведет все правила в файле /etc/sudoers , которые относятся к вашему пользователю. Это поможет вам понять, что вам можно делать с помощью sudo от имени любого пользователя.

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

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

При желании вы можете добавить следующую строку в файл /etc/sudoers с помощью visudo :

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

Заключение

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

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

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *