Install the package.
To use sudo, simply prefix a command and its arguments with sudo
and a space:
$ sudo cmd
For example, to use pacman:
$ sudo pacman -Syu
Note: For help with configuring sudo privileges via its configuration file /etc/sudoers, please see Sudoers.
Общие сведения о командной оболочке.
Получение подсказок по командам Linux
Общие рекомендации для начинающих работать с командной строкой
Linux
Выключение и перезагрузка.
Управление процессами в Linux.
Наиболее часто используемые команды Linux.
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.
- SSH problem without TTY
- View current settings
- Sudoers default file permissions
- Внимание
- Запуск программ вручную с привилегиями root
- Внимание
- Заблуждения
- Allowing other users to run sudo
- Заметки
- Преимущества использования sudo
- Sudo
- Benefits of using sudo
- Управление процессами в Linux.
- Изменение приоритетов — команды nice и renice
- Перечень наиболее часто используемых команд:
- Reset sudo timeout
- Drag & Drop Sudo
- Проблемы с TTY через SSH
- Tips and tricks
- Disable password prompt timeout
- Add terminal bell to the password prompt
- Disable per-terminal sudo
- Reduce the number of times you have to type a password
- Disable root login
- Harden with sudo example
- Configure sudo using drop-in files in /etc/sudoers.d
- Enable password input feedback
- Colored password prompt
- Downsides of using sudo
- Как получить подсказку по использованию команды Linux
- Remove Password Prompt For sudo
- Просмотр текущих настроек
- Права доступа к файлам sudoers по умолчанию
- Возврат к традиционной учетной записи root
- Root account
- Enabling the root account
- Re-disabling your root account
- Special notes on sudo and shells
- Graphical sudo
- Flavour-specific workarounds
- General workarounds
- Как перезагрузить или выключить компьютер.
- Other Resources
- Logging in as another user
- Usage
- Советы и рекомендации
- Отключение таймаута запроса пароля
- Сигнал при запросе пароля
- Один тайм-аут на все сеансы терминала
- Время действия введённого пароля
- Отключение учетной записи root
- Еще один пример настройки
- Настройка sudo с помощью вкладываемых в /etc/sudoers.d файлов
- Общие рекомендации для начинающих работать с командной строкой.
- Как управлять выводом на экран.
- Минусы использования sudo
- Misconceptions
SSH problem without TTY
This article or section is a candidate for merging with #Configuration.
Notes: please use the second argument of the template to provide more detailed indications. (Discuss in Talk:Sudo)
SSH does not allocate a tty by default when running a remote command. Without an allocated tty, sudo cannot prevent the password from being displayed. You can use ssh’s -t
option to force it to allocate a tty.
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear text. You have to run "ssh -t hostname sudo <cmd>". # #Defaults requiretty
This article or section is a candidate for merging with #Configuration.
Notes: please use the second argument of the template to provide more detailed indications. (Discuss in Talk:Sudo)
Defaults umask = 0022 Defaults umask_override
Состояние перевода: На этой странице представлен перевод статьи Sudo. Дата последней синхронизации: 26 июня 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
Sudo — это альтернатива su для выполнения команд с правами суперпользователя (root). В отличие от su, который запускает оболочку с правами root и даёт всем дальнейшим командам root-права, sudo предоставляет временное повышение привилегий для одной команды. Предоставляя привилегии root только при необходимости, sudo снижает вероятность того, что опечатка или ошибка в выполняемой команде произведут в системе разрушительные действия.
Sudo может также использоваться для выполнения команд от имени других пользователей; кроме того, sudo логирует все команды и неудачные попытки доступа для аудита безопасности.
- Доступ такого уровня к ресурсам компьютера необходим далеко не всегда.
- Доступ на уровне суперпользователя— это, скорее, большая ответственность, нежели благодать. При обычном доступе вы работаете только с ресурсами своей учетной записи. Если же вы находитесь в системе в качестве суперпользователя, вы можете случайно сделать ошибку и удалить все — да-да, все файлы всей системы Linux!
Думаете, с вами такого не случится? Даже опытные администраторы Linux рассказывают жуткие истории о том дне, когда они сделали роковую опечатку или не задумывались над тем, что они делают, работая под именем суперпользователя.
По умолчанию учетная запись суперпользователя отключена в Ubuntu. Это означает, что вы не сможете зайти в систему как root. Однако, инсталлятор настраивает sudo для пользователя, созданного во время установки. Команда sudo позволяет выполнять все приложения, требующие привилегий суперпользователя.
Когда sudo спрашивает пароль, вы должны ввести пароль ВАШЕГО пользователя ! То есть пароль root’a вам не нужен !
This article or section needs expansion.
Reason: Create an intro discussing Defaults
, perhaps with a table that lists common settings (Discuss in Talk:Sudo)
sudoers(5) § SUDOERS OPTIONS lists all the options that can be used with the Defaults
command in the /etc/sudoers
file.
View current settings
The configuration file for sudo is /etc/sudoers
. It should always be edited with the command. visudo locks the sudoers
file, saves edits to a temporary file, and checks it for syntax errors before copying it to /etc/sudoers
.
- It is imperative that
sudoers
be free of syntax errors! Any error makes sudo unusable. Always edit it with visudo to prevent errors. - warns that configuring visudo to honor the user environment variables for their editor of choice may be a security hole, since it allows the user with visudo privileges to run arbitrary commands as root without logging simply by setting that variable to something else.
The default editor for visudo is vi. The 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:
# EDITOR=nano 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.
# Set default EDITOR to restricted version of nano, and do not allow visudo to use EDITOR/VISUAL. Defaults editor=/usr/bin/rnano, !env_editor
USER_NAME ALL=(ALL:ALL) ALL
USER_NAME HOST_NAME=(ALL:ALL) ALL
To allow members of group wheel sudo access:
%wheel ALL=(ALL:ALL) ALL
Defaults:USER_NAME !authenticate
USER_NAME HOST_NAME=/usr/bin/halt,/usr/bin/poweroff,/usr/bin/reboot,/usr/bin/pacman -Syu
USER_NAME HOST_NAME= NOPASSWD: /usr/bin/halt,/usr/bin/poweroff,/usr/bin/reboot,/usr/bin/pacman -Syu
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.
# chown -c root:root /etc/sudoers # chmod -c 0440 /etc/sudoers
Пользователь root в системах GNU/Linux — это пользователь, имеющий административный доступ к вашей системе. Обычные пользователи не имеют этого доступа по соображениям безвасности. Тем не менее в Kubuntu нет пользователя root. Вместо этого, административный доступ предоставляется отдельным пользователям, которые могут использовать приложение «sudo» для выполнения административных задач. Первая учетная запись, созданная при установке системы по умолчанию будет иметь доступ к приложению sudo. Вы можете запретить доступ к sudo или предоставить его с помощью приложения Пользователи и Группы (см. «Пользователи и Группы»).
Если Вы запустите программу, требующую прав суперпользователя, sudo потребует ввести ваш обычный пользовательский пароль. Это гарантирует, что вредоносные приложения не смогут повредить вашу систему, а также напомнит Вам, что Вы собираетесь выполнить административные действия, которые требуют особой осторожности!
Чтобы использовать sudo в командной строке, просто наберите «sudo» перед командой, которую Вы хотите запустить. После этого sudo попросит ввести ваш пароль.
Sudo будет помнить ваш пароль установленное время (по умолчанию 15 минут). Эта возможность позволяет пользователям выполнять большое количество административных задач без необходимости каждый раз вводить пароль.
Внимание
Будьте осторожны при выполнении административных задач — вы можете испортить вашу систему!
Некоторые советы по использованию sudo:
-
Чтобы использовать терминал пользователя root, наберите «sudo -i» в командной строке
-
Вся группа графических утилит конфигурации в Kubuntu уже использует sudo, так что при необходимости у вас попросят пароль с помощью приложения , которое является графической оболочкой .
-
За дальнейшей информацией по программе и отсутствию пользователя root в Kubuntu обращайтесь к странице sudo на сайте Ubuntu wiki.
Запуск программ вручную с привилегиями root
Иногда необходимо выполнить программу с привилегиями root. Это легко сделать с помощью диалога .
Внимание
Пожалуйста, будьте осторожны, выполняя приложения с привилегиями root, так как это может испортить вашу систему. За дополнительной информацией см. «Пользователь root и sudo».
-
Откройте диалог , нажав —
-
Введите название программы, которую вы хотите выполнить, и нажмите . Например, чтобы запустить файловый менеджер с привилегиями root, наберите
kdesu konqueror
Заблуждения
-
Разве sudo не менее безопасно, чет su?
-
Я могу получить права администратора из консоли без ввода пароля!
- Вам потребуется ввести пароль для этого.
Allowing other users to run sudo
In the terminal (for Precise Pangolin, 12.04), this would be:
sudo adduser <username> sudo
In previous version of Ubuntu
sudo adduser <username> admin
Заметки
- Пароль сохраняется по умолчанию на 15 минут. По истечении этого времени, вам нужно будет ввести пароль снова.
- Несмотря на то, что при вводе пароль не отображается на экране (даже в виде звездочек), он все-равно вводится!
-
Для выполнения графических конфигурационных утилит с sudo, просто запустите приложение через меню.
-
Для запуска программ через sudo, которые обычно запускаются под обычным пользователем (например gedit), нажмите Alt+F2 и введите gksudo gedit. В Kubuntu используйте вместо gksudo программу kdesu.
-
Использование sudo в командной строке:
Пример #1 — смена пользователя и группы для файлов в домашней папке пользователя
sudo chown bob:bob /home/bob/*
Пример #2 — перезапуск сетевых служб
sudo /etc/init.d/networking restart
-
Для запуска графических программ используйте gksudo или kdesu, иначе попытка входа может провалиться. Если это происходит и при входе вылазит ошибка: «Unable to read ICE authority file», войдите в безопасный терминал и выполните следующую команду, подставив своё имя пользователя:
rm /home/user/.{ICE,X}authority
-
Для запуска режима суперпользователя в терминале (root shell, т.е. командная строка, где вы можете выполнять команды под пользователем root), запустите терминал и выполните команду:
sudo -i (эквивалент команды "sudo su -")
- Для запуска режима суперпользователя, оставив текущие переменные окружения, введите:
sudo -s (эквивалент команды "sudo su")
- Вход под другим пользователем (для графического входа, используйте что-то типа gdmflexiserver):
sudo -i -u username
Преимущества использования sudo
Причины, по которым пользователь root отключен по умолчанию, заключаются в следующем:
- Программа установки задаёт меньше вопросов.
- Пользователям не нужно запоминать дополнительный пароль, который они могут забыть.
- Перед тем как произойдёт выполнение команды, вас попросят ввести пароль. Это даст время подумать о возможных последствиях.
-
sudo добавляет в лог выполненные команды (/var/log/auth.log).
-
Все попытки взломщиков, пытающихся подобрать пароль к root, будут обречены на провал.
- sudo позволяет легко предоставлять права администратора на долгий или короткий период другим пользователям, просто добавляя и удаляя их из группы, при этом не трогая корневую учетную запись.
- sudo можно настроить с более fine-grained политикой безопасности.
- Аутентификация автоматически истекает по окончании определенного промежутка времени.
Чтобы начать использовать sudo
как непривилегированный пользователь, его нужно настроить должным образом. Для этого прочтите раздел о настройке.
Для использования sudo просто добавьте sudo
и пробел перед нужной командой:
$ sudo команда
Например, для использования pacman:
$ sudo pacman -Syu
Смотрите для более подробной информации.
Sudo
To use sudo on the command line, preface the command with sudo, as below: Example #1
sudo chown bob:bob /home/bob/*
sudo /etc/init.d/networking restart
To repeat the last command entered, except with sudo prepended to it, run:
sudo !!
Benefits of using sudo
There are a number of benefits to Ubuntu leaving root logins disabled by default, including:
- The installer has fewer questions to ask.
- Users don’t have to remember an extra password for occasional use (i.e. the root password). If they did, they’d be likely to forget it (or record it unsafely, allowing anyone to easily crack into their system).
-
It avoids the «I can do anything» interactive login by default. You will be prompted for a password before major changes can happen, which should make you think about the consequences of what you are doing.
-
sudo adds a log entry of the command(s) run (in /var/log/auth.log). If you mess up, you can go back and see what commands were run.
- Allows easy transfer for admin rights by adding and removing users from groups. When you use a single root password, the only way to de-authorize users is to change the root password.
- sudo can be setup with a much more fine-grained security policy.
- The root account password does not need to be shared with everybody who needs to perform some type of administrative task(s) on the system (see the previous bullet).
- The authentication automatically expires after a short time (which can be set to as little as desired or 0); so if you walk away from the terminal after running commands as root using sudo, you will not be leaving a root terminal open indefinitely.
Управление процессами в Linux.
ps
— выдаст список процессов с идентификаторами
( PID ) и их именами
или:
— выдаст тот же список процессов, но с полной строкой запуска
ps t ttyN
задач, можно воспользоваться grep:
— выдать список задач, содержащих «ppp» в имени
Для получения сведений об использовании ресурсов компьютера можно
воспользоваться командой

В верхней части окна выводятся суммарные данные о состоянии системы —
текущее время,
время с момента загрузки системы, число пользователей в системе,
число процессов в разных состояниях,
данные об использовании процессора и памяти.
Ниже выводится таблица, характеризующая отдельные процессы.
Число строк, отображаемых в этой таблице, определяется размером окна.
Содержимое окна обновляется каждые 3 секунды. Нажатие клавиши
выводит справку по командам, которые позволяют изменить формат отображаемых данных
и управлять некоторыми параметрами процессов в системе:
интервал обновления окна.
процессов
(), памяти (),
времени выполнения () и т.п.
В среде утилиты top также существуют подкоманды, которые позволяют управлять процессами в интерактивном режиме:
запрошен идентификатор процесса ( PID ), после ввода которого, процесс будет
завершен.
Как и при выполнении предыдущей команды, будет запрошен PID, и затем, новое значение
приоритета (отображается в колонке NI). Диапазон значений приоритетов — от минус 20
(наивысший) до плюс 19. Отрицательные значения и 0 может устанавливать только
пользователь root.
Для выхода из top нажмите
Эти же действия (принудительное завершение процесса и изменение его приоритета)
можно выполнить и без команды top.
Процессы в Linux имеют возможность обмениваться
так называемыми «сигналами» с ядром и другими процессами. При получении сигнала
процессом, управление передается подпрограмме его обработки или ядру, если такой подпрограммы не существует. В Linux имеется команда kill, которая позволяет послать заданному процессу любой сигнал. Список сигналов можно получить по команде:
В результате выполнения этой команды вы увидите список номеров и названий сигналов.
Для того, чтобы послать определенный сигнал выбранному процессу, нужно ввести:
kill < -номерсигнала > номер PID выбранного процесса
Например, нам нужно завершить работу приложения Midnight Commander (mc).
Пусть PID= 11597.
kill -3 11597
После чего процесс mc обработает сигнал GIGQUIT и выполнит завершение работы.
Однако, если mc «завис», то, естественно,
завершиться он не сможет, поскольку подпрограмма обработки сигнала SIGQUIT не получит
управления. В таких случаях используется сигнал под номером 9 (SIGKILL), обрабатываемый
ядром операционной системы, и принудительно завершающий указанный процесс:
kill -9 11597
Если в команде kill номер сигнала не задан, то используется значение SIGKILL, т.е предыдущую
команду можно было ввести как kill PID:
При завершении процесса завершаются и порожденные им процессы.
Для завершения процесса по его имени используется команда killall:
— завершить процесс, в имени которого есть «mc»
— завершить процессы, порожденные пользователем user
Изменение приоритетов — команды nice и renice
Для изменения приоритета процессов используются команды nice и renice. При
запуске процесса, его приоритет задается значением родительского процесса, например,
терминала xterm или командной оболочки ( shell ) . Команда nice позволяет запустить
процесс с приоритетом, равным сумме родительского (например 8) и числа, задаваемого
в качестве опции команды nice:
nice -< число > команда
nice -4 mc — запустит mc с приоритетом = 8+4=12
Команда renice используется для изменения приоритета уже запущенного процесса:
renice < число > -p PID
renice 4 -p 11597 — установить значение приоритета для процесса
mc (PID=11597) равным 4.
После выполнения, renice выдаст строку результата:
11597: old priority 12, new priority 4 — старый приоритет 12, новый приоритет 4
Задание нулевого и отрицательного числа приоритета возможно только с правами root.
Перечень наиболее часто используемых команд:
Команды для работы с файлами и каталогами:
pwd – отобразить путь текущего каталога
cd – перейти в указанный каталог
ls – отобразить список файлов каталога, с ключом -l показывает дополнительные сведения о файлах.
cp – копирование файлов/папок
mv – перемещение файлов/папок
mkdir – создать папку
rm – удалить файлы/папки, с ключом -r удаляет и все вложенные папки, с ключом -f — удаляет открытые файлы или каталоги
rmdir – удаление пустой папки
chmod – изменить права доступа к файлу
chown — сменить владельца файла или каталога
find — найти файл. Задается исходный путь для поиска и шаблон поиска, find / -name .X* —
искать от корневого каталога файлы, содержащие в имени символы .X
which — отобразить полный путь исполняемого файла, доступного в данной оболочке,
например — which ifconfig
touch — изменить временные отметки файла. Удобно использовать для создания пустых файлов – touch myfile создаст пустой файл myfile .
Системные команды
Эти команды обычно используется от имени суперпользователя ( с командой sudo ).
Управление процессами
ps – отобразить список текущих активных процессов
lsof — отобразить список открытых файлов процесса или пользователя
strace — отобразить список системных вызовов
last — отобразить историю перезагрузок и регистраций пользователей в системе
kill – послать сигнал процессу, обычно используется для принудительного завершения работы процесса.
killall – завершение работы всех процессов, имена которых заданы параметром командной строки
top – отображение списка текущих процессов и интерактивное управление ими.
Сетевые команды
ifconfig – конфигурация сетевых интерфейсов
route — таблица маршрутизации
ifup / ifdown — включить /выключить сетевой интерфейс
ip — просмотр или изменение параметров конфигурации протокола IP
netstat — отобразить состояние сетевых соединений
arp, ping, nslookup, traceroute — наиболее часто используемые команды
сетевой диагностики.
Статьи по теме:
Оболочка пользователя (shell) Linux.
Перечень наиболее часто используемых команд Linux с примерами.
Reset sudo timeout
You can make sure sudo asks for password next time by running:
sudo -k
Drag & Drop Sudo
Этот трюк взят из форумов.
Создайте кнопку запуска со следующей командой:
gksudo "gnome-open %u"
Теперь при перетаскивании любого файла на эту кнопку, будет запущено ассоциированное с этим файлом приложение с привилегиями суперпользователя. Это особенно удобно при редактировании конфигурационных файлов.
Проблемы с TTY через SSH
По умолчанию SSH не выделяет tty при выполнении удалённой команды. Без tty sudo не может отключить отображение пароля при его вводе. Вы можете воспользоваться ssh опцией -t
, чтобы заставить его выделять tty.
Defaults
опция requiretty
всего лишь позволяет запускать sudo пользователям, если они имеют tty.
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear text. You have to run "ssh -t hostname sudo <cmd>". # #Defaults requiretty
Sudo накладывает на значение umask пользователя свою собственную (которая по умолчанию установлена в 0022). Это предотвращает sudo от создания файлов с более либеральными правами доступа, чем это позволяет umask пользователя. Несмотря на то, что это разумное значение по умолчанию, если не используется измененная umask, это может привести к ситуации, когда программа, запущенная через sudo может создавать файлы с правами доступа отличными от тех, которые создаются при запуске программы непосредственно суперпользователем. Для исправления таких ошибок sudo предоставляет возможность исправить umask, даже если желаемая umask более либеральна, чем установлено в umask пользователя. Добавив такие строки (используйте visudo
) вы измените поведение sudo по умолчанию:
Defaults umask = 0022 Defaults umask_override
Это установит sudo umask в umask суперпользователя по умолчанию (0022) и переопределит поведение по умолчанию, всегда используя указанную umask и независимо от umask пользователя.
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:
Defaults passwd_timeout=0
Add terminal bell to the password prompt
Defaults passprompt="[sudo] password for %p: "
Note the is a literal bell character. E.g. in vim, insert using the sequence
Ctrl+v
Ctrl+g
. If Ctrl+v
is mapped, e.g. for pasting, one can usually use Ctrl+q
instead. In nano, Alt+v
Ctrl+g
.
This article or section needs expansion.
Reason: Is it possible to preserve the localized prompt while using bell? The same question for the case when SUDO_PROMPT is used. Is there an alternative, for example by using «-B» option as default? (Discuss in Talk:Sudo)
export SUDO_PROMPT=$'\a[sudo] please enter a password: '
alias sudo='sudo '
describes how this works:
- If the replacement text ends with a space, the next word in the shell input is always eligible for purposes of alias expansions.
As well as :
- If the last character of the alias value is a blank, then the next command word following the alias is also checked for alias expansion.
Disable per-terminal sudo
Warning: This will let any process use your sudo session.
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
:
Defaults timestamp_type=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):
Defaults timestamp_timeout=10
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).
alias sudo='sudo -v; sudo '
$ sudo -E pacman -Syu
The recommended way of preserving environment variables is to append them to env_keep
:
/etc/sudoers
Defaults env_keep += "ftp_proxy http_proxy https_proxy no_proxy"
Defaults targetpw
Defaults:%wheel targetpw %wheel ALL=(ALL) ALL
Disable root login
- Be careful, you may lock yourself out by disabling root login. Sudo is not automatically installed and its default configuration allows neither passwordless root access nor root access with your own password. Ensure a user is properly configured as a sudoer before disabling the root account!
- If you have changed your sudoers file to use rootpw as default, then do not disable root login with any of the following commands!
- If you are already locked out, see Password recovery for help.
The account can be locked via passwd
:
# passwd -l root
A similar command unlocks root.
$ sudo passwd -u root
Alternatively, edit /etc/shadow
and replace the root’s encrypted password with «!»:
root:!:12345::::::
To enable root login again:
$ sudo passwd root
Tip: To get to an interactive root prompt, even after disabling the root account, use sudo -i
.
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 ~/.config/kdesurc
:
[super-user-command] super-user-command=sudo
$ kwriteconfig5 --file kdesurc --group super-user-command --key super-user-command sudo
Harden with sudo example
#%PAM-1.0 auth sufficient pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. auth required pam_wheel.so use_uid auth required pam_unix.so account required pam_unix.so session required pam_unix.so
Limit SSH login to the ‘ssh’ group. Only «archie» will be part of this group.
# groupadd -r ssh # gpasswd -a archie ssh # echo 'AllowGroups ssh' >> /etc/ssh/sshd_config
# for g in power network ;do ;gpasswd -a archie $g ;done # for g in network power storage ;do ;gpasswd -a admin $g ;done
Set permissions on configs so devel can edit them.
# chown -R devel:root /etc/{http,openvpn,cups,zsh,vim,screenrc}
Cmnd_Alias POWER = /usr/bin/shutdown -h now, /usr/bin/halt, /usr/bin/poweroff, /usr/bin/reboot Cmnd_Alias STORAGE = /usr/bin/mount -o nosuid\,nodev\,noexec, /usr/bin/umount Cmnd_Alias SYSTEMD = /usr/bin/journalctl, /usr/bin/systemctl Cmnd_Alias KILL = /usr/bin/kill, /usr/bin/killall Cmnd_Alias PKGMAN = /usr/bin/pacman Cmnd_Alias NETWORK = /usr/bin/netctl Cmnd_Alias FIREWALL = /usr/bin/iptables, /usr/bin/ip6tables Cmnd_Alias SHELL = /usr/bin/zsh, /usr/bin/bash %power ALL = (root) NOPASSWD: POWER %network ALL = (root) NETWORK %storage ALL = (root) STORAGE root ALL = (ALL) ALL admin ALL = (root) SYSTEMD, KILL, FIREWALL devel ALL = (root) PKGMAN archie ALL = (devel) SHELL, (admin) SHELL
«archie» can connect to their home WiFi.
$ sudo netctl start home $ sudo poweroff
$ sudo -u admin -- netctl start home
$ sudo -i -u devel $ sudo -i -u admin
$ sudo -i -u root
$ sudo -i -u admin [admin]$ chown admin:tty `echo $TTY` [admin]$ screen
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
.
Note: The order of entries in the drop-in files is important: make sure that the statements do not override themselves.
Warning: The files in /etc/sudoers.d/
are just as fragile as /etc/sudoers
itself: any improperly formatted file will prevent sudo
from working. Hence, for the same reason it is strongly advised to use visudo
To edit a file, set SUDO_EDITOR
to the name of the editor and pass the file name to sudoedit
. For example:
$ SUDO_EDITOR=vim sudoedit /etc/file
See #Using visudo and for ways to set the editor, but beware of possible security issues.
If multiple names are passed to sudo
, all files are opened in the editor in a single invocation. A feature useful for merging files:
$ SUDO_EDITOR=vimdiff sudoedit /etc/file /etc/file.pacnew
/etc/sudoers
Defaults insults
Upon entering an incorrect password this will replace Sorry, try again.
message with humorous insults.
Enable password input feedback
By default, there is no visual feedback when you input a password. That is done on purpose for extra security. However, if you wish to have visual input, you can enable it by adding this line:
/etc/sudoers
Defaults pwfeedback
Colored password prompt
To customize the password prompt with colors and/or bold fonts, set the SUDO_PROMPT
environment variable in your shell initialization file and use .
For example, to set the password prompt to display Password:
in bold red, use this:
export SUDO_PROMPT="$(tput setaf 1 bold)Password:$(tput sgr0) "
Or use different colors with the default message like so:
export SUDO_PROMPT="$(tput setab 1 setaf 7 bold)[sudo]$(tput sgr0) $(tput setaf 6)password for$(tput sgr0) $(tput setaf 5)%p$(tput sgr0): "
Downsides of using sudo
Although for desktops the benefits of using sudo are great, there are possible issues which need to be noted:
- In a lot of office environments the ONLY local user on a system is root. All other users are imported using NSS techniques such as nss-ldap. To setup a workstation, or fix it, in the case of a network failure where nss-ldap is broken, root is required. This tends to leave the system unusable unless cracked. An extra local user, or an enabled root password is needed here. The local user account should have its $HOME on a local disk, _not_ on NFS (or any other networked filesystem), and a .profile/.bashrc that doesn’t reference any files on NFS mounts. This is usually the case for root, but if adding a non-root rescue account, you will have to take these precautions manually. However the advantage of using a local user with sudo is that commands can be easily tracked, as mentioned in the benefits above.
Как получить подсказку по использованию команды Linux
При работе в командной оболочке Linux, в большинстве случаев, можно получить справочную информацию по использованию конкретной команды, введя ее имя с параметром —help:
ls
-h
man-страницы
man
man
Перечень разделов man-страниц:
1 — Команды уровня пользователя.
2 — Системные вызовы. Документация о библиотечных системных вызовах, как open, read, exec и т. п. Данный раздел обычно используется программистами.
3 — Библиотеки. Этот раздел также предназначен для программистов и содержит справочную информацию о библиотеках прикладных программ ( abs, rint и т.п.)
4 и 5 — Форматы системных и пользовательских файлов. Содержит документацию о различных форматах файлов, как например, файл passwd
6 — Игры. Описание игр, поставляемых с установленной системой.
7— Драйверы. Документация к драйверам, как например ip или ipv6
8 — Поддержка системы. Документация с информацией о командах для системного администрирования ( init, fdisk, ifconfig и т.п.).
man 1 ls
ls
На практике, если требуется справка именно о команде, номер раздела опускают. В таком случае, поиск будет выполнен по всем разделам, начиная с первого до совпадения с аргументом, заданным в команде man:
ls
Иногда отсутствие номера раздела в команде man даже предпочтительнее. Например, справка по команде
man 1 init
init
Для поиска справочной документации во всех разделах, используется опция -a:
man -a passwd
passwd
команде passwd
файла паролей passwd
В качестве аргумента для строки поиска в команде man можно использовать шаблон:
man -a ip*
ip
При просмотре справочной документации, отображаемой по команде man используются клавиши:
стрелка вверх/вниз — переход на строку вверх/вниз.
PgUp/PgDown — переход на страницу вверх/вниз.
Enter — переход на строку вниз.
Пробел — переход на страницу вниз
Q — выход из справки.
Также, удобным средством поиска справочной информации являются утилиты apropos
и whatis , позволяющие выполнить поиск по ключевому слову в базе данных документации. Первая из них выводит те строки, которые содержат строку поиска в
в именах справочных страниц и кратких описаниях,
а вторая – показывает однострочные описания справочных страниц, которые имеются в начале каждой страницы. С параметрами по умолчанию команды выдадут различающуюся информацию.
Например, команда
tar
tar
tar
apropos
-s
apropos –s 1 net
При поиске обе утилиты используют индексные базы данных, которые обновляются с
помощью программы mandb ( или традиционной текстовой базы данных, создаваемой программой makewhatis), поэтому поиск выполняется очень быстро. Дополнительные параметры командной строки, используемые apropos и whatis можно получить с помощью команды man .
Remove Password Prompt For sudo
-
This method is NOT suggested nor supported by the designers of Ubuntu.
- Please do not suggest this to others unless you personally are available 24/7 to support the user if they have issues as a result of running a shell as root.
These instructions are to remove the prompt for a password when using the sudo command. The sudo command will still need to be used for root access though.
Edit the sudoers file
<username> ALL=NOPASSWD: ALL
michael ALL=NOPASSWD: ALL
Type in ^x to exit. This should prompt for an option to save the file, type in Y to save.
Log out, and then log back in. This should now allow you to run the sudo command without being prompted for a password.
Or to do this for the system wide group sudo
root$ echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
Log out, and then back in.
sudoers(5) § SUDOERS OPTIONS содержит список опций, которые можно использовать с командой Defaults
в файле /etc/sudoers
.
Здесь доступен список опций (извлечён из исходного кода версии 1.8.7) в формате, удобном для копирования и вставки в файл sudoers
.
Смотрите для более подробной информации, например о настройке таймаутов.
Просмотр текущих настроек
Выполните sudo -ll
для вывода текущей конфигурации sudo.
Чтобы посмотреть настройки, действующие для конкретного пользователя, выполните sudo -lU пользователь
.
Файл настроек /etc/sudoers
всегда следует редактировать с помощью команды . visudo блокирует файл sudoers
, сохраняет изменения во временный файл и проверяет, что файл синтаксически корректен, перед тем как скопировать его в /etc/sudoers
.
- Крайне важно, чтобы файл
sudoers
был без синтаксических ошибок! Любая ошибка делает sudo неработоспособным. Всегда редактируйте его только с помощью visudo для предотвращения ошибок. - Из : Обратите внимание, что это дыра в безопасности, поскольку позволяет пользователю запускать любую программу, какую он захочет, просто прописав её в VISUAL или EDITOR.
visudo использует vi в качестве текстового редактора по умолчанию. Пакет скомпилирован с опцией --with-env-editor
по умолчанию и использует переменные VISUAL
и EDITOR
. EDITOR
не используется, если задана переменная VISUAL
.
Чтобы выбрать nano в качестве редактора для visudo в текущем сеансе, задайте и экспортируйте переменную EDITOR
перед запуском visudo. Чтобы выбрать другой редактор однократно, можно просто прописать эту переменную перед командой visudo:
# EDITOR=nano visudo
В качестве альтернативы можно отредактировать копию файла /etc/sudoers
и вручную запустить проверку синтаксиса с помощью команды visudo -c /копия/файла/sudoers
. Это может пригодиться, если вас не устраивает, что visudo блокирует файл.
Для изменения редактора на постоянной основе для текущего пользователя, смотрите раздел Переменные окружения#На уровне пользователя. Для того, чтобы установить выбранный редактор на постоянной основе для всей системы, но только для visudo, добавьте следующее в /etc/sudoers
(предположим, что вы предпочитаете nano в качестве редактора):
# Сброс окружения Defaults env_reset # Установка ограниченного варианта nano в качестве редактора по умолчанию и запрет visudo использовать EDITOR/VISUAL. Defaults editor=/usr/bin/rnano, !env_editor
Настройка sudo осуществляется добавлением записей в файл /etc/sudoers
. Чтобы дать пользователю привилегии суперпользователя, когда он вводит sudo
перед командой, добавьте следующую строку:
имя_пользователя ALL=(ALL:ALL) ALL
Разрешить пользователю выполнять все команды от любого пользователя, но только на машине с определенным названием хоста:
имя_пользователя название_хоста=(ALL:ALL) ALL
Предоставить членам группы wheel доступ к sudo:
%wheel ALL=(ALL:ALL) ALL
Совет: Для добавления новых администраторов рекомендуется включить доступ к sudo для группы wheel
и добавлять новых пользователей в неё, поскольку по умолчанию Polkit рассматривает членов группы wheel
как администраторов. Если пользователь не является членом группы wheel
, программы, использующие Polkit, могут запросить аутентификацию с использованием пароля root вместо пароля пользователя.
Чтобы не спрашивать пароль у пользователя:
Важно: Это позволит любому процессу, запущенному под вашим именем пользователя, использовать sudo, не спрашивая разрешения.
Defaults:имя_пользователя !authenticate
Разрешить выполнять только конкретные команды и только пользователю на определенном хосте:
имя_пользователя название_хоста=/usr/bin/halt,/usr/bin/poweroff,/usr/bin/reboot,/usr/bin/pacman -Syu
Примечание: Наиболее общие опции должны идти в начале файла, а наиболее частные — наоборот, в конце файла, так как более нижние строки переопределяют более верхние. В частности, добавляемая строка должна быть после строки %wheel
, если ваш пользователь находится в этой группе.
Разрешить выполнять конкретно определённые команды только для пользователя на определенном хосте и без пароля:
имя_пользователя название_хоста= NOPASSWD: /usr/bin/halt,/usr/bin/poweroff,/usr/bin/reboot,/usr/bin/pacman -Syu
Права доступа к файлам sudoers по умолчанию
Файл sudoers
должен иметь владельца root и группу root (0). Права доступа всегда должны быть установлены как r--r-----
(0440). Эти права установлены по умолчанию, однако если вы случайно измените их, они должны быть немедленно изменены обратно, иначе sudo не будет работать.
# chown -c root:root /etc/sudoers # chmod -c 0440 /etc/sudoers
Возврат к традиционной учетной записи root
Consider using the below command instead:
sudo -i
Использование этой команды временно откроет консоль с правами root. Активация аккаунта root в Ubuntu не поддерживается из-за ненадобности. Всё, что вам требуется сделать с правами администратора в Ubuntu можно сделать через sudo или gksudo.
Если root включен, и вы хотите отключить его, откройте терминал и введите следующую команду:
sudo passwd -l root
Root account
Enabling the root account
sudo -i
To enable the root account (i.e. set a password) use:
sudo passwd root
Use at your own risk!
Re-disabling your root account
sudo passwd -dl root
Special notes on sudo and shells
None of the methods below are suggested or supported by the designers of Ubuntu.
To start a root shell (i.e. a command window where you can run root commands), starting root’s environment and login scripts, use:
sudo -i (similar to sudo su - , gives you roots environment configuration)
To start a root shell, but keep the current shell’s environment, use:
sudo -s (similar to sudo su)
Summary of the differences found —
corrupted by user's HOME=/root uses root's PATH env vars sudo -i Y Y[2] N sudo -s N Y[2] Y sudo bash N Y[2] Y sudo su Y N[1] Y [1] PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games probably set by /etc/environment [2] PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
For a detailed description of the differences see man su and man sudo .
Graphical 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.
Flavour-specific workarounds
There are a number of flavour-specific options for running graphical applications as root:
-
-
pkexec thunar pkexec mousepad /etc/fstab
-
-
General workarounds
- 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
-
-
-
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.
-
Как перезагрузить или выключить компьютер.
Одно и то же действие в Linux очень часто можно
выполнить несколькими способами. В большинстве дистрибутивов Linux для перезагрузки или выключения
компьютера используется
Полный список опций можно получить по
Для немедленной перезагрузки (restart) команда будет выглядеть так:
shutdown -r now
shutdown -h now
В большинстве дистрибутивов можно использовать короткие команды:
Можно также воспользоваться изменением уровня запуска системы командой
Если вам нужно завершить графическую оболочку (например, когда инсталляция некоторых приложений требует ее закрытия) введите:
Графическая оболочка закроется, и система перейдет на уровень запуска 3. Для
возврата на уровень 5 введите:
Уровень запуска системы по умолчанию определяется значением
Если 5 заменить на 3, то графическая оболочка при старте системы запускаться не будет.
Все выше сказанное относится к системам инициализации SysV (SystemV), которая много лет использовалась во всех дистрибутивах Linux для загрузки рабочей среды с помощью скриптов init. Однако, начиная с 2012г, наметился постепенный переход на systemd новую систему инициализации, изначально разработанную для дистрибутива Fedora, начиная с Fedora 14.8 . Попросту говоря, systemd — это демон инициализации других демонов в Linux, пришедший на замену используемому ранее скрипту инициализации (/sbin/init). Главная его особенность — распараллеливание запуска служб в процессе загрузки системы, что позволяет существенно ускорить запуск операционной системы. Реализация systemd значительно отличается не только логикой, но и принципами управления процессом запуска, набором программных модулей и конфигурационных файлов. Файла /etc/initd больше нет, и для определения уровня запуска в systemd используются символические ссылки, например:
— для состояния init 5
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
Команды init N в дистрибутивах с использованием systemd пока поддерживаются, но очевидно, что ее время заканчивается.
Документация systemd для администраторов ( перевод на русский язык, ноябрь 2014г.)
Other Resources
CategoryCommandLine CategorySecurity CategoryCommandLine
Установите пакет .
Logging in as another user
sudo -i -u <username>
sudo -i -u amanda
The password being asked for is your own, not amanda’s.
Usage
- When using sudo, your password is stored by default for 15 minutes. After that time, you will need to enter your password again.
-
Your password will not be shown on the screen as you type it, not even as a row of stars (******). It is being entered with each keystroke!
Советы и рекомендации
Отключение таймаута запроса пароля
Часто раздражает такая вещь: вы запускаете какой-то долгий процесс, который работает с обычными правами и повышает их только при необходимости, и когда sudo запросит пароль, вы можете случайно не заметить это и не ввести его вовремя, из-за чего случается таймаут, процесс умирает и проделанная работа теряется или, если повезёт, кэшируется. Обычно советуют отключить запрос пароля для sudo или увеличить время действия ранее введённого пароля, однако оба этих способа имеют негативные последствия для безопасности. Таймаут запроса пароля тоже можно отключить, и поскольку это никак не влияет на безопасность, это и должно быть предпочтительным решением:
Defaults passwd_timeout=0
Сигнал при запросе пароля
Чтобы работающий в фоне терминал привлёк ваше внимание в момент запроса пароля, можно добавить символ BELL в строку запроса пароля:
Defaults passprompt="^G[sudo] password for %p: "
Вместо ^G
должен быть вписан настоящий символ BELL. Например, чтобы ввести его в vim, используйте сочетание Ctrl+v
Ctrl+g
, а в nano используйте Alt+v
Ctrl+g
.
Если у вас установлено много псевдонимов, вы могли заметить, что они не переносятся в сеанс sudo. Однако, это легко исправить. Просто добавьте в ваш ~/.bashrc
или /etc/bash.bashrc
строку:
alias sudo='sudo '
Один тайм-аут на все сеансы терминала
Важно: Это позволит любому процессу воспользоваться вашим открытым сеансом sudo.
По умолчанию сеанс sudo действует только в пределах текущего терминала; при запуске sudo в новом терминале он запросит пароль заново. Если вас это раздражает, укажите для опции timestamp_type
значение global
:
Defaults timestamp_type=global
Время действия введённого пароля
Возможно, вы захотите изменить промежуток времени, в течение которого sudo действует без ввода пароля. Этого легко добиться добавив опцию timestamp_timeout
в /etc/sudoers
(по умолчанию 5 минут):
Defaults timestamp_timeout=10
Если вы запускаете много sudo-команд подряд, возможно, вместо увеличения timestamp_timeout
лучше просто периодически обновлять временную метку. Команда sudo -v
запустит отсчёт таймаута заново. С помощью команды sudo -K
можно удалить временную метку, что приведёт к запросу пароля при следующем запуске sudo.
Обновление временной метки можно автоматизировать с помощью такого псевдонима (добавьте его в .bashrc
):
alias sudo='sudo -v; sudo '
Также можно сделать bash-функцию: подробнее на stackexchange.
$ sudo -E pacman -Syu
Рекомендованный способ сохранения переменных окружения — это прописать их в env_keep
:
/etc/sudoers
Defaults env_keep += "ftp_proxy http_proxy https_proxy no_proxy"
Вы можете сконфигурировать sudo так, чтобы он спрашивал пароль суперпользователя вместо пароля текущего пользователя, добавив targetpw
(целевой пользователь, по умолчанию root) или rootpw
в список опций Defaults в /etc/sudoers
:
Defaults targetpw
Чтобы не понадобилось разглашать пароль root обычным пользователям, можно указать эту опцию только для определённой группы:
Defaults:%wheel targetpw %wheel ALL=(ALL) ALL
Отключение учетной записи root
Вы можете захотеть отключить возможность входа систему пользователя root. Без этого атакующие сначала должны будут угадать имя пользователя, сконфигурированного как sudoer, а также пароль этого пользователя. Смотрите для примера Secure Shell (Русский)#Отключение.
- Будьте осторожны. Вы можете попасть в свою ловушку, если отключите вход систему пользователя root. Sudo по умолчанию не установлен, и его стандартная конфигурация не позволяет ни получить доступ к правам root без пароля, ни дать такой доступ вам по вашему собственному паролю. Убедитесь, что пользователь правильно сконфигурирован как sudoer перед отключением аккаунта суперпользователя!
- Если файл sudoers настроен на использование rootpw по умолчанию, то не отключайте root-вход ни одной из следующих команд!
- Если вы уже попали в ловушку, смотрите статью Сброс пароля root для получения помощи.
Можно заблокировать аккаунт с помощью passwd
:
# passwd -l root
Похожая команда снимает блокировку:
$ sudo passwd -u root
Также вы можете отредактировать /etc/shadow
и заменить зашифрованный пароль root на «!»:
root:!:12345::::::
Тогда, чтобы задать новый пароль и тем самым разблокировать пользователя root:
$ sudo passwd root
Совет: Чтобы попасть в командную оболочку root даже после отключения аккаунта, используйте команду sudo -i
.
kdesu можно использовать в KDE для запуска графических программ с привилегиями суперпользователя. Вероятно, что kdesu по умолчанию будет пытаться использовать su, даже если аккаунт root отключен. К счастью, можно сказать kdesu использовать sudo вместо su. Создайте/отредактируйте файл ~/.config/kdesurc
:
[super-user-command] super-user-command=sudo
или используйте следующую команду:
$ kwriteconfig5 --file kdesurc --group super-user-command --key super-user-command sudo
Еще один пример настройки
Отредактировать /etc/pam.d/su
и /etc/pam.d/su-1
.
Потребовать, чтобы пользователь был в группе wheel, но никого в неё не добавлять.
#%PAM-1.0 auth sufficient pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. auth required pam_wheel.so use_uid auth required pam_unix.so account required pam_unix.so session required pam_unix.so
Разрешить вход по SSH только для группы ‘ssh’. В эту группу будет входить только «joe».
# groupadd -r ssh # gpasswd -a joe ssh # echo 'AllowGroups ssh' >> /etc/ssh/sshd_config
Перезапустите службу sshd.service
.
Добавить пользователей в другие группы.
# for g in power network ;do ;gpasswd -a joe $g ;done # for g in network power storage ;do ;gpasswd -a admin $g ;done
Установить права на настройки так, чтобы devel мог редактировать их.
# chown -R devel:root /etc/{http,openvpn,cups,zsh,vim,screenrc}
Cmnd_Alias POWER = /usr/bin/shutdown -h now, /usr/bin/halt, /usr/bin/poweroff, /usr/bin/reboot Cmnd_Alias STORAGE = /usr/bin/mount -o nosuid\,nodev\,noexec, /usr/bin/umount Cmnd_Alias SYSTEMD = /usr/bin/journalctl, /usr/bin/systemctl Cmnd_Alias KILL = /usr/bin/kill, /usr/bin/killall Cmnd_Alias PKGMAN = /usr/bin/pacman Cmnd_Alias NETWORK = /usr/bin/netctl Cmnd_Alias FIREWALL = /usr/bin/iptables, /usr/bin/ip6tables Cmnd_Alias SHELL = /usr/bin/zsh, /usr/bin/bash %power ALL = (root) NOPASSWD: POWER %network ALL = (root) NETWORK %storage ALL = (root) STORAGE root ALL = (ALL) ALL admin ALL = (root) SYSTEMD, KILL, FIREWALL devel ALL = (root) PKGMAN joe ALL = (devel) SHELL, (admin) SHELL
С такими настройками вам практически никогда не понадобится входить как суперпользователь.
«joe» может подсоединиться к своему домашнему WiFi.
$ sudo netctl start home $ sudo poweroff
«joe» не может использовать netctl от имени другого пользователя.
$ sudo -u admin -- netctl start home
Когда «joe» хочет воспользоваться journalctl или убить зависший процесс, он может переключиться на нужного пользователя:
$ sudo -i -u devel $ sudo -i -u admin
Но «joe» не может переключиться на суперпользователя.
$ sudo -i -u root
$ sudo -i -u admin [admin]$ chown admin:tty `echo $TTY` [admin]$ screen
Настройка sudo с помощью вкладываемых в /etc/sudoers.d файлов
sudo обрабатывает файлы, содержащиеся в директории /etc/sudoers.d/
. Это означает, что вместо того, чтобы редактировать /etc/sudoers
, вы можете менять настройки в отдельных файлах и перемещать их в эту директорию. Это даёт два преимущества:
- Вам не понадобится редактировать файл
sudoers.pacnew
; - Если с новой записью будет проблема, вы можете просто удалить соответствующий файл вместо необходимости редактировать
/etc/sudoers
(но смотрите предупреждение ниже).
Формат записей в этих вкладываемых файлах такой же, как и в самом файле /etc/sudoers
. Чтобы редактировать их напрямую, используйте visudo -f /etc/sudoers.d/файл
. Смотрите sudoers(5) § Including other files from within sudoers для дополнительной информации.
Файлы из каталога /etc/sudoers.d/
обрабатываются в лексикографическом порядке; файлы, содержащие .
или ~
в имени, пропускаются. Чтобы избежать путаницы с сортировкой, рекомендуется начинать имена файлов с двух цифр, например 01_foo
.
Примечание: Порядок настроек в файлах имеет значение: убедитесь, что правила не переопределяют сами себя.
Важно: Файлы в /etc/sudoers.d/
так же хрупки, как и сам /etc/sudoers
: любой некорректный файл сделает sudo
неработоспособным. Поэтому по той же причине настоятельно рекомендуется использовать visudo
sudo -e
или sudoedit
позволяет редактировать файл от имени другого пользователя, но при этом запускать текстовый редактор от имени вашего пользователя.
Это полезно для редактирования файлов от имени root без предоставления повышенных привилегий вашему текстовому редактору. Подробнее об этом читайте в .
В качестве редактора можно использовать любую программу, поэтому, например, можно использовать для управления файлами pacnew:
$ SUDO_EDITOR=meld sudo -e /etc/файл{,.pacnew}
Вы можете сконфигурировать sudo так, чтобы при вводе неверного пароля он выводил шутливые оскорбления вместо стандартного сообщения «Sorry, try again». Найдите строку Defaults
в /etc/sudoers
и добавьте insults
в список опции, разделяя их запятыми. Конечный результат может выглядеть так:
/etc/sudoers
Defaults insults
Для проверки, введите sudo -K
, чтобы завершить текущий сеанс и позволить sudo заново запросить пароль.
Общие рекомендации для начинающих работать с командной строкой.
Работа в командной строке Linux имеет некоторые принципиальные отличия по сравнению с
работой в среде Windows.
Во-первых, не забывайте, что строчные и
заглавные буквы для Linux — это разные символы. В операционной системе Windows каталог
TEMP и каталог Temp — это один и тот же каталог, в Linux — это два разных.
То же самое касается команд, их ключей, имен пользователей ,паролей и т.п.
Во-вторых, справка по команде с параметром —help и справка из man-страницы различаются. Последняя, как правило, более подробная, с примерами и ссылкой на связанные
разделы документации.
Для выполнения отдельно взятой команды от имени суперпользователя root или другого пользователя используется команда sudo:
ifconfig
sudo su —
sudo
su
su
root
Команда sudo может использоваться для интерактивного режима суперпользователя root (пользователя с администраторскими правами). Обычно этот прием используется для тех случаев, когда с правами суперпользователя нужно выполнить не одну команду, а несколько.
exit
Обычно, использование команды sudo предпочтительнее, чем использование su и, при дополнительных настройках системы, позволяет легко отдавать отдельным пользователям
только строго необходимые привилегии.
Основная часть настроек sudo хранится в файле /etc/sudoers и задает правила, определяющие, какие пользователи, каких компьютеров, какие команды могут выполнять с вводом или без ввода пароля. Администратор системы может на какое-то время передать полномочия суперпользователя root любому пользователю, не передавая ему пароль от учетной записи root.
Отдельная статья по настройкам и использованию команды sudo
Начинающих пользователей Linux обычно пугает работа в командной оболочке из-за необходимости набирать слишком длинные строки команд, имена каталогов или файлов. Однако, в большинстве случаев, в таком наборе нет необходимости. При работе в среде командной оболочки очень удобно использовать режим подстановки имен с помощью клавиши Tab. Например, для получения списка файлов каталога /home/everyone пользователю необходимо набрать команду
Однако, оболочка позволяет обойтись без полного набора пути. Если после набора ls /h нажать клавишу Tab, то в командной строке будет подставлена недостающая часть имени каталога — ome, и в строке ввода отобразится
Как управлять выводом на экран.
Для просмотра текста, ушедшего за пределы видимости экрана, используются
комбинации клавиш
Для вывода большого объема текста на экран в постраничном режиме
используется команда
cat имя файла
cat mytxt
grep < строка поиска >
Иногда удобно использовать одновременно несколько терминалов, переключаясь
между ними (например, когда необходимо смотреть информацию журнала в одном окне и управлять процессами и настройками в другом).
Чтобы запустить еще один графический сервер на этом же компьютере,
используйте команду
startx 1 — :1
Для завершения сеанса работы в командной оболочке используется команда
Вы можете создать журнал своей консольной сессии, в котором будет отображено
все, что вы вводили с клавиатуры, и все, что выдавалось на экран терминала.
Для этого используется команда
script имя файла журнала
Чтобы прекратить запись в журнал введите
команду
Для просмотра истории ранее введенных команд используются стрелки Вверх/Вниз. При вводе
набранной или вызванной из истории команды положение курсора относительно
строки ввода значения не имеет.
Кроме того, в домашнем каталоге пользователя, имеется файл истории вводимых команд для данной оболочки, например .bash_history . Для отображения его содержимого на экране можно воспользоваться командой history.
Для просмотра информации в конечной части файлов ( например, журналов ) используется команда tail:
tail –n 100 /var/log/mrssages
Минусы использования sudo
Хотя выгода для использования sudo на персональных компьютерах велика, есть некоторые моменты, которые надо отметить:
- Во многих офисных системах только один локальный пользователь в системе root. Все остальные пользователи импортируются через NSS технологии, такие как nss-ldap. Для настройки рабочей станции в случае повреждения сети, при поломке nss-ldap, необходим root. This tends to leave the system unusable unless cracked. An extra local user, or an enabled root password is needed here.
Misconceptions
-
Isn’t sudo less secure than su?
-
- The sulogin program in Ubuntu is patched to handle the default case of a locked root password.
-
I can get a root shell from the console without entering a password!
- You have to enter your password.