Linux sudo all users

Linux sudo all users

Sudo allows a system administrator to delegate authority to give certain users—or groups of users—the ability to run commands as root or another user while providing an audit trail of the commands and their arguments.

Sudo is an alternative to su for running commands as root. Unlike su, which launches a root shell that allows all further commands root access, sudo instead grants temporary privilege elevation to a single command. By enabling root privileges only when needed, sudo usage reduces the likelihood that a typo or a bug in an invoked command will ruin the system.

Sudo can also be used to run commands as other users; additionally, sudo logs all commands and failed access attempts for security auditing.

Contents

Installation

Usage

To begin using sudo as a non-privileged user, it must be properly configured. See #Configuration.

To use sudo, simply prefix a command and its arguments with sudo and a space:

For example, to use pacman:

See sudo(8) for more information.

Configuration

This article or section needs expansion.

Defaults skeleton

sudoers(5) § SUDOERS OPTIONS lists all the options that can be used with the Defaults command in the /etc/sudoers file.

See [1] for a list of options (parsed from the version 1.8.7 source code) in a format optimized for sudoers .

See sudoers(5) for more information, such as configuring the password timeout.

View current settings

Run sudo -ll to print out the current sudo configuration, or sudo -lU user for a specific user.

Using visudo

The configuration file for sudo is /etc/sudoers . It should always be edited with the visudo(8) command. visudo locks the sudoers file, saves edits to a temporary file, and checks it for syntax errors before copying it to /etc/sudoers .

The default editor for visudo is vi. The sudo package is compiled with —with-env-editor and honors the use of the SUDO_EDITOR , VISUAL and EDITOR variables. EDITOR is not used when VISUAL is set.

To establish nano as the visudo editor for the duration of the current shell session, export EDITOR=nano ; to use a different editor just once simply set the variable before calling visudo:

Alternatively you may edit a copy of the /etc/sudoers file and check it using visudo -c /copy/of/sudoers . This might come in handy in case you want to circumvent locking the file with visudo.

To change the editor permanently, see Environment variables#Per user. To change the editor of choice permanently system-wide only for visudo, add the following to /etc/sudoers (assuming nano is your preferred editor):

Example entries

To allow a user to gain full root privileges when they precede a command with sudo , add the following line:

To allow a user to run all commands as any user but only on the machine with hostname HOST_NAME :

To allow members of group wheel sudo access:

To disable asking for a password for user USER_NAME :

Enable explicitly defined commands only for user USER_NAME on host HOST_NAME :

Enable explicitly defined commands only for user USER_NAME on host HOST_NAME without password:

A detailed sudoers example is available at /usr/share/doc/sudo/examples/sudoers . Otherwise, see the sudoers(5) for detailed information.

Sudoers default file permissions

The owner and group for the sudoers file must both be 0. The file permissions must be set to 0440. These permissions are set by default, but if you accidentally change them, they should be changed back immediately or sudo will fail.

Tips and tricks

Disable password prompt timeout

A common annoyance is a long-running process that runs on a background terminal somewhere that runs with normal permissions and elevates only when needed. This leads to a sudo password prompt which goes unnoticed and times out, at which point the process dies and the work done is lost or, at best, cached. Common advice is to enable passwordless sudo, or extend the timeout of sudo remembering a password. Both of these have negative security implications. The prompt timeout can also be disabled and since that does not serve any reasonable security purpose it should be the solution here:

Add terminal bell to the password prompt

To draw attention to a sudo prompt in a background terminal, users can simply make it echo a bell character:

Note the ^G is a literal bell character. E.g. in vim, insert using the sequence Ctrl+v Ctrl+g , or in nano, Alt+v Ctrl+g .

Passing aliases

If you use a lot of aliases, you might have noticed that they do not carry over to the root account when using sudo. However, there is an easy way to make them work. Simply add the following to your

/.bashrc or /etc/bash.bashrc :

Disable per-terminal sudo

If you are annoyed by sudo’s defaults that require you to enter your password every time you open a new terminal, set timestamp_type to global :

Reduce the number of times you have to type a password

If you are annoyed that you have to re-enter your password every 5 minutes (default), you can change this by setting a longer value for timestamp_timeout (in minutes):

Читайте также:  Changing the screen resolution in linux

If you are using a lot of sudo commands on a row, it is more logical to refresh the timeout every time you use sudo than to increase timestamp_timeout . Refreshing the timeout can be done with sudo -v (whereas sudo -K revokes immediately).

You might want to automate this by adding the following to your .bashrc :

It is also possible to use a bash function; for more details see stackexchange.

Environment variables

If you have a lot of environment variables, or you export your proxy settings via export http_proxy=». » , when using sudo these variables do not get passed to the root account unless you run sudo with the -E option.

The recommended way of preserving environment variables is to append them to env_keep :

Root password

Users can configure sudo to ask for the root password instead of the user password by adding targetpw (target user, defaults to root) or rootpw to the Defaults line in /etc/sudoers :

To prevent exposing your root password to users, you can restrict this to a specific group:

Disable root login

Users may wish to disable the root login. Without root, attackers must first guess a user name configured as a sudoer as well as the user password. See for example OpenSSH#Deny.

The account can be locked via passwd :

A similar command unlocks root.

Alternatively, edit /etc/shadow and replace the root’s encrypted password with «!»:

To enable root login again:

kdesu

kdesu may be used under KDE to launch GUI applications with root privileges. It is possible that by default kdesu will try to use su even if the root account is disabled. Fortunately one can tell kdesu to use sudo instead of su. Create/edit the file

or use the following command:

Alternatively, install kdesudo AUR , which has the added advantage of tab-completion for the command following.

Harden with sudo example

Let us say you create 3 users: admin, devel, and joe. The user «admin» is used for journalctl, systemctl, mount, kill, and iptables; «devel» is used for installing packages, and editing config files; and «joe» is the user you log in with. To let «joe» reboot, shutdown, and use netctl we would do the following:

Edit /etc/pam.d/su and /etc/pam.d/su-l Require user be in the wheel group, but do not put anyone in it.

Limit SSH login to the ‘ssh’ group. Only «joe» will be part of this group.

Add users to other groups.

Set permissions on configs so devel can edit them.

With this setup, you will almost never need to login as the Root user.

«joe» can connect to his home WiFi.

«joe» can not use netctl as any other user.

When «joe» needs to use journalctl or kill run away process he can switch to that user.

But «joe» cannot switch to the root user.

If «joe» want to start a gnu-screen session as admin he can do it like this:

Configure sudo using drop-in files in /etc/sudoers.d

sudo parses files contained in the directory /etc/sudoers.d/ . This means that instead of editing /etc/sudoers , you can change settings in standalone files and drop them in that directory. This has two advantages:

  • There is no need to edit a sudoers.pacnew file;
  • If there is a problem with a new entry, you can remove the offending file instead of editing /etc/sudoers (but see the warning below).

The format for entries in these drop-in files is the same as for /etc/sudoers itself. To edit them directly, use visudo -f /etc/sudoers.d/somefile . See sudoers(5) § Including other files from within sudoers for details.

The files in /etc/sudoers.d/ directory are parsed in lexicographical order, file names containing . or

are skipped. To avoid sorting problems, the file names should begin with two digits, e.g. 01_foo .

Editing files

sudo -e or sudoedit lets you edit a file as another user while still running the text editor as your user.

This is especially useful for editing files as root without elevating the privilege of your text editor, for more details read sudo(8) § e .

Note that you can set the editor to any program, so for example one can use meld to manage pacnew files:

Enable insults

Users can enable insults easter egg in sudo by adding the following line in sudoers file with visudo .

Upon entering an incorrect password this will replace Sorry, try again. message with humorous insults.

Troubleshooting

SSH problem without TTY

This article or section is a candidate for merging with #Configuration.

SSH does not allocate a tty by default when running a remote command. Without a allocated tty, sudo cannot prevent the password from being displayed. You can use ssh’s -t option to force it to allocate a tty.

The Defaults option requiretty only allows the user to run sudo if they have a tty.

Permissive umask

This article or section is a candidate for merging with #Configuration.

Sudo will union the user’s umask value with its own umask (which defaults to 0022). This prevents sudo from creating files with more open permissions than the user’s umask allows. While this is a sane default if no custom umask is in use, this can lead to situations where a utility run by sudo may create files with different permissions than if run by root directly. If errors arise from this, sudo provides a means to fix the umask, even if the desired umask is more permissive than the umask that the user has specified. Adding this (using visudo ) will override sudo’s default behavior:

Читайте также:  Загружаемый контент герой windows 10

This sets sudo’s umask to root’s default umask (0022) and overrides the default behavior, always using the indicated umask regardless of what umask the user as set.

Источник

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

Команда sudo ( s ubstitute u ser and do , подменить пользователя и выполнить ) позволяет строго определенным пользователям выполнять указанные программы с административными привилегиями без ввода пароля суперпользователя root . Если быть точнее, то команда sudo позволяет выполнять программы от имени любого пользователя, но, если идентификатор или имя этого пользователя не указаны, то предполагается выполнение от имени суперпользователя root . Таким образом, использование sudo позволяет выполнять привилегированные команды обычным пользователям без необходимости ввода пароля суперпользователя root . Список пользователей и перечень их прав по отношению к ресурсам системы может быть настроен оптимальным образом для обеспечения комфортной и безопасной работы. Например, команда sudo в Ubuntu Linux, используется в режиме, позволяющем выполнять любые задачи администрирования системы без интерактивного входа под учетной записью root .

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

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

sudo -h | -K | -k | -V

sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]

sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]

sudo [-AbEHknPS] [-C num] [-g group] [-h host] [-p prompt] [-u user] [VAR=value] [-i|-s] [ ]

sudo -e [-AknS] [-C num] [-g group] [-h host] [-p prompt] [-u user] file

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

-A, —askpass — использовать вспомогательную программу для ввода пароля

-b, —background — выполнить команду в фоновом режиме

-C, —close-from=num — закрыть все дескрипторы файлов >= num

-E, —preserve-env — сохранить пользовательское окружение при выполнении команды

-e, —edit — редактировать файлы вместо выполнения команды

-g, —group=group — выполнить команду от имени или ID указанной группы

-H, —set-home — установить для переменной HOME домашний каталог указанного пользователя

-h, —help — показать справку и выйти

-h, —host=host — выполнить команду на узле (если поддерживается модулем)

-i, —login — запустить оболочку входа в систему от имени указанного пользователя; также можно задать команду

-K, —remove-timestamp — полностью удалить файл с timestamp

-k, —reset-timestamp — объявить недействительным файл timestamp

-l, —list — показать список прав пользователя или проверить заданную команду; в длинном формате используется дважды

-n, —non-interactive — автономный режим без вывода запросов пользователю

-P, —preserve-groups — сохранить вектор группы вместо установки целевой группы

-p, —prompt=prompt — использовать указанный запрос пароля

-S, —stdin — читать пароль из стандартного ввода

-s, —shell — запустить оболочку от имени указанного пользователя; также можно задать команду

-U, —other-user=user — в режиме списка показывать права пользователя

-u, —user=user — выполнить команду (или редактировать файл) от имени или ID указанного пользователя

-V, —version — показать сведения о версии и выйти

-v, —validate — обновить временную метку пользователя без выполнения команды

— — прекратить обработку аргументов командной строки

Примеры использования команды sudo :

sudo –l — отобразить список команд, доступных для выполнения текущему пользователю. Кроме списка команд отображаются параметры среды, которые будут применяться при их выполнении.

sudo –ll — отобразить список команд, доступных для выполнения текущему пользователю в длинном (расширенном) формате.

В данном формате вместо краткого синтаксиса для списка разрешенных команд в виде (ALL : ALL) ALL отображается подробное описание прав пользователя:

sudo lshw -C network — отобразить информацию о сетевом оборудовании с правами суперпользователя root

sudo –l –U user1 — посмотреть список команд, доступных для выполнения пользователю user1 . Для выполнения данной команды пользователь должен быть root или иметь право на выполнение команды sudo -l , что обеспечивается настройками утилиты sudo в файле /etc/sudoers

sudo ipmitool sensor — выполнить команду ipmitool sensor с правами root .

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

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

sudo ls /usr/local/protected — получить список файлов каталога, доступного только root

sudo -u user2 ls

— получить список файлов домашнего каталога пользователя user2

www/htdocs/index.html — редактировать файл

www/htdocs/index.html от имени пользователя www

sudo -g adm view /var/log/syslog — просмотреть файл системного журнала, доступного только суперпользователю root и членам группы adm

sudo -u user1 -g users2 vi /home/users2/textfile.txt — редактировать текстовый файл как пользователь user1, с принадлежностью к первичной группе users2

sudo -E /usr/bin/firefox — запустить браузер firefox от имени суперпользователя root , сохранив параметры среды текущего пользователя. Возможность выполнения команд с сохранением среды пользователя должна быть разрешена параметром SETENV в настройках файла конфигурации sudo

Файл конфигурации /etc/sudoers

Настройки sudo определяется содержимым файла /etc/sudoers . Поскольку ошибочные данные в данном файле могут привести к серьезным проблемам доступа к ресурсам системы, рекомендуется выполнять его изменение с помощью специального редактора sudoedit ( в некоторых дистрибутивах — visudo ), который поддерживает функции проверки синтаксиса и значительно снижает риск создания неработоспособной конфигурации sudo .

Содержимое файла /etc/sudoers определяет имена пользователей и групп, перечень выполняемых программ, необходимость введения паролей, и некоторые другие настройки, связанные с формированием переменных окружения при смене пользователя. Кроме данного файла, настройки sudo могут определяться содержимым файлов из каталога /etc/sudoers.d , что позволяет структурировать систему предоставления прав на использование sudo в виде набора файлов с осмысленными именами, что полезно при большом количестве пользователей и сложной системе разграничения прав. Имена файлов конфигураций в каталоге /etc/sudoers.d могут быть любыми, но их содержимое должно полностью соответствовать формату файла /etc/sudoers .

Читайте также:  Windows crack file download

Синтаксис настроек в файле /etc/sudoers позволяет использовать специальные псевдонимы ( Alias-ы ), с помощью которых значительно упрощается как настройка, так и восприятие конфигурационной информации sudo .

В файле конфигурации /etc/sudoers возможно использование четырех разновидностей псевдонимов:

User_Alias — списки пользователей, для которых настраивается политика использования sudo .

Runas_Alias — списки пользователей, от имени которых может быть задано выполнение команд через sudo .

Host_Alias — списки узлов, с которых выполняется подключение к системе.

Cmnd_Alias — списки команд, использующиеся в настройках, выполняемых директивами файла /etc/sudoers

Host_Alias ADMCOMPS = localhost, server, admin — определяет псевдоним ADMCOMPS , который определяет группу компьютеров с именами localhost, server, admin .

Host_Alias MAILSERVERS = 192.168.0.100, smtp2 — определяет группу из двух компьютеров с указанными IP и именем. Возможно использование адресов подсетей.

User_Alias ADMINS = jsmith, admusr — определяет группу ADMINS , в которую входят пользователи с именами jsmith и admusr .

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

## Группа команд, для работы в сети, псевдоним Networking

Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool

# Группа команд для управления установкой и удалением программ, псевдоним SOFTWARE

Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum

# Группа команд для управления системными службами, псевдоним SERVICES

Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig

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

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

user — имена или псевдонимы пользователей.

MACHINE — имена или псевдонимы компьютеров

COMMANDS — секция команд, включающая имена или псевдонимы команд и дополнительные параметры.

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

Аналогичным образом можно разрешить выполнение через sudo всех команд для пользователя, например, с именем user

user ALL=(ALL) ALL

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

user ALL=(ALL) NOPASSWD: /usr/bin/su, /usr/bin/drakxconf — пароль будет запрашиваться при выполнении пользователем user через sudo всех команд, кроме su и drakxconf

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

ADMINS localhost=(ALL) NOPASSWD:ALL — разрешить группе пользователей, определенной псевдонимом “ADMINS” выполнять любые команды при подключении через петлевой интерфейс “localhost” без ввода пароля..

ADMINS ALL= NETWORKING, SOFTWARE — разрешить группе пользователей, объединенных псевдонимом “ADMINS” выполнять группы команд, объединенные псевдонимами “NETWORKING” и “SOFTWARE”.

Для существующих в системе групп пользователей можно также разрешать выполнение отдельных команд или групп команд:

%users localhost=/sbin/shutdown -h now — разрешить локальным пользователям выключение компьютера.

%operators ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom — разрешить членам группы “operators” монтирование и размонтирование указанных устройств.

%powerusers ALL=NETWORKING, NOPASSWD: /usr/bin/su — разрешить членам группы “powerusers” выполнять команды группы “NETWORKING” с вводом пароля и команду “su” без пароля.

Довольно часто возникает необходимость исключения разрешения на выполнение отдельных команд из списка, объединенных псевдонимом . В этом случае, перед именем команды или псевдонима ставится восклицательный знак – !

ADMINS ALL= ALL, !NETWORKING — разрешить группе пользователей, объединенных псевдонимом “ADMINS” выполнение всех команд, кроме команд, объединенных псевдонимом “NETWORKING”

В следующем примере, используется конфигурация команд, разрешающая выполнение через sudo для всех пользователей группы “ADMINS”, всех команд, кроме команд смены оболочки :

ADMINS ALL= ALL, !/bin/bash, !/usr/bin/su

Кроме настроек доступа, в файле /etc/sudoers присутствуют директивы Defaults , определяющие некоторые настройки путей исполняемых файлов и создание переменных окружения при выполнении команд:

Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin

Defaults env_keep = «COLOS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS»

Defaults env_keep += «MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE»

Defaults env_keep += «LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES»

Defaults env_keep += «LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE»

Defaults env_keep += «LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY»

По умолчанию, если интервал выполнения команд с использованием sudo , не превышает 5 минут, то повторный ввод пароля не требуется. Однако, это значение можно изменить, добавив значение timestamp_timeout в минутах:

В данном случае, если команда sudo будет выполняться не позже, чем через 1 минуту после ввода пароля для предыдущей команды, то повторно пароль запрашиваться не будет. Если значение “timestamp_timeout” сделать равным нулю, то пароль будет запрашиваться при каждом запуске sudo , если сделать отрицательным ( -1 ), — то повторный ввод пароля не будет запрашиваться никогда.

Для исключения возможности выполнения sudo-команд при подключении через ssh без авторизации, по умолчанию, должна использоваться команда “ssh –t “:

# Disable «ssh hostname sudo «, because it will show the password in clear.

# You have to run «ssh -t hostname sudo «.

Для определения дополнительного каталога с файлами конфигурации пользователей sudo используется директива:

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)

Подробную справку по использовании sudo можно получить с помощью команд:

Если вы желаете помочь развитию проекта, можете воспользоваться кнопкой «Поделиться» для своей социальной сети

Источник

Оцените статью