Работа с командной строкой, горячие клавиши и дополнительные символы
Базовые методы управления текстом в терминале.
clear — удаляет из текущий сессии терминала все ранее выведенные в него данные, содержимое открытых документов и историю использованных команд. Используется, когда нужно четко лицезреть вывод конкретной операции.
history — показывает ранее использованные приложения и инструменты. Без дополнительных аргументов отображает 10 элементов. Но их количество можно изменить вручную, добавив к слову history любое число. history 13, к примеру.
whatis — дает однострочную справку к любой из установленных программ. Принцип работы следующий: вводим слово whatis, а за ним следом название приложения, о котором хотим узнать. Например, чтобы узнать о том, что такое nano, введем в терминал: whatis nano.
man название пакета — открывает документацию к любой из установленных программ. В ней можно посмотреть, какие функции есть у приложения, как им пользоваться, какие могут возникнуть проблемы.
Дополнительные символы
Не совсем команды, но тоже текстовые элементы, причем полезные.
; — разделитель, необходимый, чтобы активировать сразу несколько команд подряд. Это выглядит так: cd ~/Documents; mkdir Novaya_papka; rmdir Staraya-papka. Команды будут выполняться друг за другом независимо от результата выполнения каждой из них.
&& — то же самое, что и ;, но с важным нюансом. Команды, соединенные с помощью &&, будут выполняться друг за другом, только если предыдущая завершилась успешно. Синтаксис аналогичный:
sudo apt-get update && sudo apt-get install wget
| — запускает сразу две команды. Это может быть полезно, когда нужно запросить информацию из какого-нибудь приложения, а потом найти в полученных данных определенную строку, код, слово или иной элемент текста.
~ — сокращение от /home/имя учетной записи/. Часто фигурирует в инструкциях.
Горячие клавиши
Парочка полезных сочетаний клавиш.
Стрелка вверх — показывает предыдущую команду.
Ctrl+C — прерывает запущенный процесс.
Ctrl+A — перемещает курсор в начало строки.
Ctrl+E — перемещает курсор в конец строки.
Запуск программ с правами администратора в терминале
Для запуска в терминале команды с правами администратора просто наберите перед ней sudo :
У вас попросят ввести ваш пароль. Будьте внимательны, пароль при вводе никак не отображается, это нормально и сделано в целях безопасности, просто вводите до конца и нажимайте Enter . После ввода пароля указанная команда исполнится от имени root.
Система какое-то время помнит введённый пароль (сохраняет открытой sudo-сессию). Поэтому при последующих выполнениях sudo ввод пароля может не потребоваться. Для гарантированного прекращения сессии sudo наберите в терминале
Кроме того, часто встречаются ошибки, связанные с каналами в Linux. При исполнении команды
с правами root исполнится только cat , поэтому файл result.txt может не записаться. Нужно либо писать sudo перед каждой командой, либо временно переходить под суперпользователя.
How to Add User to Sudoers in Debian
21 Апреля 2021
|
Debian
В этом руководстве показаны два способа предоставить пользователю права sudo.
— это утилита командной строки, которая позволяет доверенным пользователям запускать команды от имени другого пользователя, по умолчанию root.
Первый способ — добавить пользователя в файл sudoers . Этот файл содержит набор правил, определяющих, каким пользователям или группам предоставляются привилегии sudo, а также уровень этих привилегий. Второй вариант — добавить пользователя в группу sudo, указанную в файле. По умолчанию в Debian и его производных членам группы «sudo» предоставляется доступ sudo.
Добавление пользователя в группу sudo
Самый быстрый и простой способ предоставить пользователю права sudo — это добавить пользователя в группу «sudo». Члены этой группы могут выполнять любую команду как root через и получать запрос на аутентификацию с их паролем при использовании .
Мы предполагаем, что пользователь, которого вы хотите назначить группе, уже существует .
Выполните команду ниже от имени пользователя root или другого пользователя sudo, чтобы добавить пользователя в группу sudo
Убедитесь, что вы заменили «username» на имя пользователя, которому вы хотите предоставить доступ.
Предоставления доступа sudo с помощью этого метода достаточно для большинства случаев использования.
Чтобы убедиться, что пользователь был добавлен в группу, введите:
Вам будет предложено ввести пароль. Если у пользователя есть доступ к sudo, команда выведет «root». В противном случае вы получите сообщение об ошибке «пользователя нет в файле sudoers».
Добавление пользователя в файл sudoers
Права sudo пользователей и групп определены в файле. Этот файл позволяет вам предоставлять индивидуальный доступ к командам и устанавливать собственные политики безопасности.
Вы можете настроить доступ пользователей, отредактировав файл sudoers или создав новый файл конфигурации в каталоге. Файлы внутри этого каталога включены в файл sudoers.
Всегда используйте команду для редактирования файла. Эта команда проверяет файл на наличие синтаксических ошибок при его сохранении. Если есть ошибки, файл не сохраняется. Если вы отредактируете файл в обычном текстовом редакторе, синтаксическая ошибка может привести к потере доступа sudo.
использует редактор, указанный в переменной среды , для которой по умолчанию установлено значение vim. Если вы хотите отредактировать файл с помощью nano , измените переменную, запустив:
Допустим, вы хотите разрешить пользователю запускать команды sudo без запроса пароля. Для этого откройте файл:
Прокрутите вниз до конца файла и добавьте следующую строку:
/etc/sudoers
Сохраните файл и выйдите из редактора . Не забудьте изменить «имя пользователя» на имя пользователя, которому вы хотите предоставить доступ.
Другой типичный пример — разрешить пользователю запускать только определенные команды через . Например, чтобы разрешить только и команды , которые вы будете использовать:
/etc/sudoers
Вместо редактирования файла sudoers вы можете добиться того же, создав новый файл с правилами авторизации в каталоге. Добавьте то же правило, что и в файл sudoers:
Такой подход делает управление привилегиями sudo более удобным в обслуживании. Имя файла не имеет значения, но обычно имя файла соответствует имени пользователя.
Чтобы предоставить пользователю доступ к sudo в Debian, просто добавьте пользователя в группу «sudo»
Специальные права доступа к файлам в Linux
Для того, чтобы позволить обычным пользователям выполнять программы от имени суперпользователя без знания его пароля была придумана такая вещь, как SUID и SGID биты. Рассмотрим эти полномочия подробнее.
- SUID — если этот бит установлен, то при выполнении программы, id пользователя, от которого она запущена заменяется на id владельца файла. Фактически, это позволяет обычным пользователям запускать программы от имени суперпользователя;
- SGID — этот флаг работает аналогичным образом, только разница в том, что пользователь считается членом группы, с которой связан файл, а не групп, к которым он действительно принадлежит. Если SGID флаг установлен на каталог, все файлы, созданные в нем, будут связаны с группой каталога, а не пользователя. Такое поведение используется для организации общих папок;
- Sticky-bit — этот бит тоже используется для создания общих папок. Если он установлен, то пользователи могут только создавать, читать и выполнять файлы, но не могут удалять файлы, принадлежащие другим пользователям.
Теперь давайте рассмотрим как посмотреть и изменить права на файлы в Linux.
Что использовать sudo или su?
У программы su похожее назначение: запустить команду с подстановкой ID другого пользователя и группы. То есть одинакового результата можно добиться используя как sudo, так и su.
Различия sudo и su в следующем:
1. При использовании su необходимо сообщать пароль root обычному пользователю (но это можно обойти — подробности в этом разделе чуть ниже). При использовании sudo пользователь вводит свой собственный пароль.
2. У обеих команд есть интерактивный режим, то есть можно как бы выполнить вход от имени другого пользователя. Также обе программы, sudo и su, позволяют выполнять команды без интерактивного режима. В su интерактивный режим запускается по умолчанию (если не указана команда для выполнения):
su -
В sudo для входа в интерактивный шелл нужно использовать опцию -i:
sudo -i
Точнее говоря, всё немного сложнее, опция -i в sudo означает запустить оболочку входа в систему от имени указанного пользователя; также можно задать команду. Сравните:
sudo pwd /home/mial
и
sudo -i pwd /root
Также обратите внимание, что при указании команды не запускается интерактивная оболочка.
3. Использование sudo требует настройки, а именно: 1) добавление пользователя в группу, имеющую право использовать эту программу; 2) установка разрешений (перечисление команд, которые может запускать пользователь с sudo и т. д. При некоторых настройках, если пользователь не упомянут в конфигурационных файлах sudo, то он не может ей пользоваться. Программа su не требует настройки для каждого пользователя.
4. Разное отношение с окружением выполнения: смена текущей рабочей директории при входе в интерактивный режим su, сохранение текущей рабочей директории при выполнении отдельных команд с sudo и su. Сравните переменную окружения $HOME в команде
sudo echo $HOME /home/mial
со значением $HOME в команде:
su -c 'echo $HOME' /root
5. Некоторые конструкции оболочки работают с sudo не так, как вы ожидаете. Смотрите в качестве примера статью «Как использовать echo вместе с sudo». С su такой проблемы нет.
На самом деле, для подавляющего числа случаев использования этих программ, каких-то кардинальных различий между sudo и su нет, то есть вы можете выбрать любую из них для выполнения команды с повышенными привилегиями или от другого пользователя. Чаще используется sudo только по той причине, что её синтаксис короче: достаточно добавить sudo перед выполняемой командой, что касается su, то запуск одной команды требует конструкции su -c ‘КОМАНДА’.
Но если нужно выполнить несколько команд с повышенными привилегиями, то достаточно войти в интерактивную консоль su:
su -
И затем перед командами уже ненужно ставить sudo.
Кстати, благодаря sudo можно войти в интерактивную сессию root’а не с паролем суперпользователя, а с паролем обычного пользователя, для этого нужно запустить такую команду:
sudo su -
Или использовать интерактивный режим самой sudo:
sudo -i
Переключение на суперпользователя в терминале
Теперь мы подошли к более интересному и практичному. С помощью специальных утилит вы можете переключить текущий эмулятор терминала в окружения суперпользователя и выполнять все следующие команды не от своего имени, а от его, таким образом, дав программе права root linux. Для этого существует утилита su. Вообще говоря, эта утилита позволяет не только переключаться на пользователя root но и на любого другого пользователя, но по умолчанию используется именно root. Рассмотрим ее подробнее. Команда su linux имеет следующий синтаксис:
$ su опции пользователь
Вот ее основные опции:
- -c, —command — выполнить команду
- -g, —group — установить основную группу пользователя (только для root)
- -G —supp-group — дополнительные группы пользователя (только для root)
- -, -l, —login — режим входа, будут очищены и инициализированы с учетом нового пользователя все переменные окружения, а также изменен домашний каталог
- -p, —preserve-environment — сохранить переменные окружения
- -s, —shell — задать оболочку для входа
- —version — отобразить версию программы.
Теперь немного поэкспериментируем, чтобы понять как работает команда su linux.
Сначала выполним su без параметров, но для начала создадим переменную окружения, чтобы проверить как с ними обходится эта команда:
Теперь смотрим что получилось:
whoami $ pwd $ echo $VAR $ echo $PATH $ exit
Из этих команд мы видим, что теперь мы пользователь root, но домашней директорией считается директория нашего предыдущего пользователя и наша переменная не сохранилась также изменилась переменная PATH, теперь там добавлен путь /sbin.
Теперь используем вход в режиме логина:
И повторим ту же комбинацию:
whoami $ pwd $ echo $VAR $ echo $PATH $ exit
Та же ситуация, только на этот раз изменена ко всему еще и домашняя директория на директорию root. Но мы можем сохранить наши переменные окружения, если это нужно, для этого есть опция -p:
Как видите, наша переменная осталась. Вы также можете переключится на любого другого пользователя. Например:
Получение прав суперпользователя таким способом используется во многих дистрибутивах, например, Debian, OpenSUSE, ArchLInux, Gentoo и т д. Но в Ubuntu, как дистрибутиве для начинающих вход под пользователем root отключен. Это сделано потому, что это тоже не очень безопасно, вы можете забыть что выполняете команду от root и что-то натворить в системе. Поэтому переходим к следующей программе.
Изменение времени сессии sudo
Необходимо изменить настройки sudo. Для этого выполните команду:
Откроется текстовый редактор (обычно это nano) с конфигурационным файлом.
Найдите строку:
Допишите в конце строки через запятую следующую опцию timestamp_timeout=x
. Должно получиться:
Здесь 10
— это и есть время в минутах через которое sudo будет запрашивать пароль.
Сохрание изменения и закройте редактор:
- Для этого нажмите сочетание клавиш Ctrl+X
. - Появится сообщение «Сохранить измененный буфер?
» (Save modified buffer?
), нажмите клавишу Y
, чтобы сохранить изменения или N
, чтобы отменить изменения. - Если на предыдущем шаге вы нажали Y
, то появится сообщение «Имя фала для записи: /etc/sudoers.tmp
» (File Name to Write: /etc/sudoers.tmp
) — просто нажмите клавишу Enter
.
timestamp_timeout
— определяет время в минутах, которое должно пройти, чтобы при выполнении sudo снова запросился пароль. Время можно вводить целым или десятичным числом. Например, чтобы задать таймаут равным 2 с половиной минуты, нужно указать timestamp_timeout=2.5
.
Присвоение пользователю привилегий Sudo
Чаще всего при управлении разрешениями используется операция предоставления новому пользователю общего доступа . Это полезно, если вы хотите предоставить учетной записи полный административный доступ к системе.
В системе с группой администрирования общего назначения, такой как система Ubuntu в этом учебном модуле, проще всего будет добавить данного пользователя в эту группу.
Например, в Ubuntu 20.04 группа имеет полные привилегии администратора. Добавляя пользователя в эту группу, мы предоставляем ему такие же привилегии:
Также можно использовать команду :
Обе команды выполняют одно и то же.
В CentOS эта группа обычно называется , а не :
Также можно использовать :
Если в CentOS добавление пользователя в группу не срабатывает сразу же, вам может потребоваться отредактировать файл , чтобы убрать символ комментария перед именем группы:
/etc/sudoers
Основные параметры
Алиас Defaults позволяет задать стандартные параметры для работы утилиты, их мы и рассмотрим в этом разделе. Начинается такой алиас со слова Defaults, дальше идет имя флага. Если перед именем есть символ !, это значит, что флаг нужно включить, в обратном случае выключить:
Отключаем введение при первом использовании:
Суперпользователь не может выполнять sudo:
Теперь если вы попытаетесь выполнить sudo sudo ничего не сработает:
Изменять домашнюю директорию для целевого пользователя, по умолчанию остается папка текущего пользователя в качестве домашней директории:
Сохранять список групп текущего пользователя:
Запрашивать пароль суперпользователя вместо пароля пользователя:
Дальше рассмотрим переменные, которым можно задать значения чтобы установить нужные настройки:
Задать количество попыток ввода пароля перед тем, как sudo прекратит работу, по умолчанию — 3:
Количество минут, которое пройдет перед тем, как sudo будет спрашивать пароль снова, по умолчанию 5. Если установить значение в 0, то пароль будет спрашиваться всегда, независимо от того как давно вы использовали утилиту:
Следующий параметр задает количество минут, пока sudo будет ожидать повторного ввода пароля при неправильном вводе:
Вы можете изменить сообщение, которое будет выводится при запросе пароля:
Можно указать другого пользователя, не root, от которого будут выполняться все команды, для этого используйте:
Вы можете записывать в лог все попытки подключения к sudo:
Затем пробуем проверить работу лога:
Это были все самые интересные параметры настройки работы sudo, которые могут вам понадобиться, дальше мы рассмотрим как задать права доступа sudo для пользователей.
Настройка пользователей sudo
Мы уже рассматривали выше синтаксис настройки действий для пользователей, здесь все сложнее чем с псевдонимами, но разобраться можно. Например, разрешим любому пользователю использовать sudo, от любого хоста и выполнять любые команды:
Такая команда очень небезопасна, она разрешает всем и все. Первое ALL — разрешить всем пользователям, второе ALL — для всех хостов, третье ALL — разрешить вход под любым пользователем и четвертое — разрешить выполнять любою команду. Но куда более часто используется другая конструкция:
Означает то же самое, что и предыдущее, только здесь мы разрешаем использовать sudo не всем пользователям, а только тем, которые состоят в группе wheel.
Тут мы уже ограничили возможный выбор пользователей только пользователем root. Также можно указать группу пользователя, от имени которого он может выполнять команды:
Это значит что можно выполнить команду от имени root или другого пользователя из группы admins. Еще мы можем указать команды, которые может выполнять пользователь. Например:
Пользователь может выполнять только команды mount и umount от имени суперпользователя. Теперь сделаем еще интереснее, пользователь может выполнять mount и umount без пароля, а все остальные команды с паролем:
Также можно ограничивать пользователям по хостах, например, разрешаем использование sudo только из host1:
Осталось еще рассмотреть как применять псевдонимы. Псевдонимы могут быть таких типов:
- User_Alias — псевдоним пользователей, которые будут использовать sudo;
- Runas_Alias — псевдоним пользователей, от имени которых будут выполняться команды;
- Host_Alias — псевдоним хоста;
- Cmnd_Alias — псевдоним команд;
Например, создадим четыре псевдонима и применим их в нашем правиле:
Далее применяем все это в правиле:
Это значит, что пользователи из списка Users смогут выполнять команды Cmds от имени пользователей Amdins на хостах Hosts.
Еще осталось сказать несколько слов о флагах. Флаг NOPASSWD говорит, что не нужно запрашивать пароль при выполнении этого правила. Например, разрешить всем пользователям выполнять команду mount с sudo без пароля:
Также можно запретить выполнять именно эту команду вообще с помощью флага NOEXEC:
Вы можете проверить правильно ли была проведена настройка файла /etc/sudoers и посмотреть все созданные правила с помощью команды:
Здесь отображены все установленные флаги и настройки, а также полномочия данного пользователя.
Повышение пользовательских прав командой sudo
Существует более современный способ повышения пользовательских прав с помощью команды sudo (substitute user and do — подменить пользователя и выполнить).
Sudo является программой системного администрирования, дающей возможность выполнять команды от имени root. Если для выполнения команды su все пользователи должны были знать пароль root, что само по себе небезопасно, то sudo его не требует. В sudo нужен пароль самого пользователя.
Sudo работает следующим образом, перед командой которую необходимо выполнить, нужно добавить sudo, например:
От имени root: yum install -y wget При помощи sudo: sudo yum install -y wget
Sudo определяет пользователя сверяясь с настройками находящимися в файле /etc/sudoers, если пользователь внесен в sudoers, то команда выполняется. Если выполнить команду sudo от имени пользователя не внесенного в sudoers, то можно увидеть такую картину:
$ sudo yum install -y wget password for test: test is not in the sudoers file. This incident will be reported.
При попытке выполнить команду sudo, от имени пользователя test, выдается ответ что такого пользователя в файле sudoers не обнаружено. О событии создается запись в лог файле, также высылается электронное письмо root-пользователю с уведомлением о случившемся.
From root@test2.localdomain Sat Feb 11 20:19:12 2017 Return-Path: <root@test2.localdomain> X-Original-To: root Delivered-To: root@test2.localdomain Received: by test2.localdomain (Postfix, from userid 0) id CD2AF8051BC; Sat, 11 Feb 2017 20:19:12 +0300 (MSK) To: root@test2.localdomain From: test@test2.localdomain Auto-Submitted: auto-generated Subject: *** SECURITY information for test2 *** Message-Id: <20170211171912.CD2AF8051BC@test2.localdomain> Date: Sat, 11 Feb 2017 20:19:12 +0300 (MSK) test2 : Feb 11 20:19:12 : test : user NOT in sudoers ; TTY=pts/0 ; PWD=/home/test ; USER=root ; COMMAND=/bin/yum install wget
Для того чтобы пользователь мог выполнять sudo, его надо внести в файл sudoers. Сделать это можно двумя способами.
Первый способ — внесение имени пользователя непосредственно в сам файл /etc/sudoers. Для изменения файла sudoers, требуется обладать правами root.
nano /etc/sudoers Находим строку: root ALL=(ALL) ALL Добавляем под нее имя пользователя, которому будет разрешен доступ к sudo: root ALL=(ALL) ALL test ALL=(ALL) ALL Сохраняем и выходим.
После того как пользователь будет внесен в список допущенных к использованию, он может выполнять команду sudo.
Вторым способом разрешить пользователям выполнять команду sudo, является внесение пользователя в группу wheel, точно так же как в случае с командой su.
Вносим пользователя в группу wheel: usermod -a -G wheel techlist_1 Проверяем: id techlist_1 uid=1001(techlist_1) gid=1004(techlist_1) группы=1004(techlist_1),10(wheel) Перезагружаем систему: reboot
После перезагрузки системы, пользователь внесенный в группу wheel, сможет выполнять sudo.
Для того чтобы полностью сменить окружение пользователя на окружение root, используется команда sudo -i, что равносильно использованию команды su —
$ sudo -i password for test: #
Возвращение в свое пользовательское окружение, происходит при помощи команды exit.
Каждый раз при использовании sudo, требуется ввод пароля пользователя. При вводе пароля, происходит обновление временной метки, что позволяет выполнять sudo без ввода пароля на протяжении некоторого времени. По умолчанию ввод пароля не требуется на протяжении пяти минут, после чего пароль опять будет затребован. Временной промежуток можно изменить при помощи опции timeout в файле sudoers. Существует возможность отключения ввода пароля.
Отключить ввод пароля для пользователей принадлежащих к группе wheel:
Открываем для внесения изменений: nano /etc/sudoers Находим строку: # %wheel ALL=(ALL) NOPASSWD: ALL Раскомментировать строку: %wheel ALL=(ALL) NOPASSWD: ALL Сохраняем изменения и выходим.
Отключить ввод пароля для пользователей добавленных вручную:
Открываем для внесения изменений: nano /etc/sudoers Находим строку с нужным пользователем: test ALL=(ALL) ALL Изменяем ее: test ALL=(ALL) NOPASSWD: ALL Сохраняем изменения и выходим.
Sudo гибкая в настройке и позволяет настроить множество различных параметров. Грамотный администратор знающий sudo может творить настоящие чудеса с пользователями.
Для просмотра руководства по настройке sudo, выполняется команда:
Посмотреть руководство sudo: man sudoers Выйти из руководства: q Посмотреть список дополнительных опций команды: sudo -h
Использование
Давайте теперь рассмотрим использование sudo на конкретных примерах.
Активируем запись log-файла для sudo
Добавляем в конфигурационный файл след. строку:
Defaults logfile=/var/log/sudo.log
1 | Defaults logfile=varlogsudo.log |
Теперь в этот файл будет писаться информация случаях некорректного использования
.
Разрешим пользователям группы wheel полный административный доступ.
Откройте конфигурационный файл и найдите строку:
# %wheel ALL=(ALL) ALL
1 | # %wheel ALL=(ALL) ALL |
уберите символ
, чтобы раскомментировать строку и сохраните файл. Если вдруг такой строки вы не нашли, то просто добавьте ее.
Для проверки зайдите на сервер пользователем hc и выполните
~% sudo -s password for hc: /home/hc#
1 2 3 |
hc@hc~%sudo-s sudopassword forhc root@hchomehc# |
Введя еще раз пароль от пользователя hc вы получите доступ к консоли с правами root.
Для сравнения залогиньтесь как user1 – получите что-то похожее:
~% sudo -s password for user1: user1 is not in the sudoers file. This incident will be reported.
1 2 3 |
user1@hc~%sudo-s sudopassword foruser1 user1 isnotinthe sudoers file.Thisincident will be reported. |
Посмотрим log-файл
, увидим информацию, что user1 пытался использовать sudo, не имея на это прав:
Jul 28 16:00:55 : user1 : user NOT in sudoers ; TTY=pts/2 ; PWD=/home/user1 ; USER=root ; COMMAND=/bin/bash
1 2 |
Jul28160055user1user NOTinsudoers;TTY=pts2;PWD=homeuser1; USER=root;COMMAND=binbash |
Убираем запрос пароля при запуске команд через sudo
Для той же группы wheel:
%wheel ALL=(ALL) NOPASSWD: ALL
1 | %wheel ALL=(ALL)NOPASSWDALL |
А ТЕПЕРЬ ВНИМАНИЕ! Ни когда не даем пользователю полного доступа, как в предыдущем примере и тем более, без ввода пароля, как описано в этом! Всегда давайте ровно столько, сколько надо!
Примеры безопасного делегирования прав
Разрешим user1 пользоваться yum (для Debian/Ubuntu заменить yum на apt-get), добавим строчку:
%user1 ALL=/usr/bin/yum
1 | %user1 ALL=usrbinyum |
Теперь user1 может выполнить:
sudo yum install ineedthisprogram
1 | sudo yum install ineedthisprogram |
и установить ту программу которая ему нужна. Если же выполнить без добавления sudo:
yum install htop Loaded plugins: fastestmirror You need to be root to perform this command.
1 2 3 |
yum install htop Loaded pluginsfastestmirror You need tobe root toperform thiscommand. |
Создадим группу yumusers и добавим туда user1:
# groupadd yumusers # usermod user1 -aG yumusers
1 2 |
# groupadd yumusers # usermod user1 -aG yumusers |
Изменим строчку в
следующим образом:
%yumusers ALL=/usr/bin/yum
1 | %yumusers ALL=usrbinyum |
Теперь все пользователи этой группы смогут пользоваться yum, а нового пользователя достаточно добавить в группу, не прописывая в конфиг.
Формат записей выделения прав
Давайте поподробнее разберем, что же значат все эти ALL. Структура строки следующая:
=()
1 | пользователь|группахост=(кемможетстать)чтоможетсделать |
Т.е. запись:
%user1 ALL=(root) /usr/bin/yum, /user/bin/mount
1 | %user1 ALL=(root)usrbinyum,userbinmount |
означает – пользователь user1, на любом хосте, может от имени root запустить yum и mount, т.е. установить программу или примонтировать раздел.
Алиасы в sudo
В реальности, вряд ли вы ограничитесь только одной командой для одного пользователя. Скорее всего вам будет нужно выдать целый список доступов. Можно конечно каждый раз перечислять все через запятую, а можно и задать алиас. Что он из себя представляет:
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
1 | Cmnd_Alias NETWORKING=sbinroute,sbinifconfig,binping,sbindhclient,usrbinnet,sbiniptables,usrbinrfcomm,usrbinwvdial,sbiniwconfig,sbinmii-tool |
и теперь вы можете написать:
%user1 ALL=(root) Cmnd_Alias
1 | %user1 ALL=(root)Cmnd_Alias |
В
уже созданы несколько алиасов на наиболее распространенные группы команд, их достаточно раскомментировать и можно использовать.
Примеры использования su
Смена пользователя на суперпользователя root, без смены окружения оболочки:
Обратите внимание, что здесь вам нужно набрать пароль не своего пользователя, а именно того, от имени которого вы хотите авторизоваться. В данном случае, пользователя root
Если вы получаете ошибку сбой при проверке подлинности su linux, то это может означать, что либо вы ввели пароль неверно, либо пароль для этого пользователя не задан. Такое можно встретить у пользователя root в Ubuntu и Linux Mint. Информацию о том как установить пароль вы можете найти в этой статье. Смена пользователя на суперпользователя root со сменой параметров окружения оболочки:
Смена пользователя на пользователя user01:
Смена пользователя на пользователя user01 со сменой окружения:
Запуск оболочки zsh для пользователя user01:
Запуск оболочки bash из оболочки zsh для пользователя user01:
Запуск файлового менеджера Midnight Commander для пользователя user01:
Просмотр содержимого директории boot суперпользователем root:
Чтобы выйти из оболочки, открытой командой su можно использовать встроенную команду exit или сочетание клавиш Ctrl+d.
Изменение файла Sudoers
Файл откроется в выбранном вами текстовом редакторе.
Я скопировал и вставил файл с сервера Ubuntu 18.04 с удаленными комментариями. Файл CentOS содержит намного больше строк, и некоторые из них не будут обсуждаться в этом руководстве.
/etc/sudoers
Давайте посмотрим, что делают эти строки.
Строки по умолчанию
Первая строка Defaults env_reset сбрасывает среду терминала для удаления переменных пользователя. Эта мера безопасности используется для сброса потенциально опасных переменных среды в сеансе .
Вторая строка, , предписывает системе отправлять уведомления о неудачных попытках ввода пароля для настроенного пользователя . По умолчанию это учетная запись root.
Третья строка, начинающаяся с “Defaults secure_path=…”, задает переменную (места в файловой системе, где операционная система будет искать приложения), которая будет использоваться для операций . Это предотвращает использование пользовательских путей, которые могут быть вредоносными.
Строки пользовательских привилегий
Четвертая строка, которая определяет для пользователя root привилегии , отличается от предыдущих строк. Давайте посмотрим, что означают различные поля:
-
Первое поле показывает имя пользователя, которое правило будет применять к (root).
-
Первое “ALL” означает, что данное правило применяется ко всем хостам.
-
Данное “ALL” означает, что пользователь root может запускать команды от лица всех пользователей.
-
Данное “ALL” означает, что пользователь root может запускать команды от лица всех групп.
-
Последнее “ALL” означает, что данные правила применяются всем командам.
Это означает, что наш пользователь root сможет выполнять любые команды с помощью после ввода пароля.
Строки групповых привилегий
Следующие две строки похожи на строки привилегий пользователя, но задают правила для групп.
Имена, начинающиеся с , означают названия групп.
Здесь мы видим, что группа admin может выполнять любые команды от имени любого пользователя на любом хосте. Группа sudo имеет те же привилегии, но может выполнять команды от лица любой группы.
Строка Included /etc/sudoers.d
Последняя строка выглядит как комментарий:
/etc/sudoers
Она действительно начинается с символа , который обычно обозначает комментарии. Однако данная строка означает, что файлы в каталоге также рассматриваются как источники и применяются.
Файлы в этом каталоге следуют тем же правилам, что и сам файл . Любой файл, который не заканчивается на и не содержит символа , также считывается и добавляется в конфигурацию .
В основном это нужно, чтобы приложения могли изменять привилегии после установки. Размещение всех правил в одном файле в каталоге позволяет видеть, какие привилегии присвоены определенным учетным записям, а также легко сменять учетные данные без прямого изменения файла .
Как и в случае с файлом , другие файлы в каталоге также следует редактировать с помощью команды . Для редактирования этих файлов применяется следующий синтаксис:
Получение прав суперпользователя для выполнения нескольких команд
Иногда возникает необходимость выполнить подряд несколько команд с правами администратора. В этом случае можно временно стать суперпользователем одной из следующих команд:
После этого вы перейдёте в режим суперпользователя (с ограничениями, наложенными через настройки sudo), о чём говорит символ # в конце приглашения командной строки. Данные команды по действию похожа на su , однако: — sudo -s — не меняет домашний каталог на /root, домашним остается домашний каталог пользователя вызвавшего sudo -s, что обычно очень удобно. — sudo -i — сменит так же и домашний каталог на /root.
Для выхода обратно в режим обычного пользователя наберите exit или просто нажмите Ctrl + D .
Как настроить использование sudo без пароля
Данная настройка только для тех пользователей, кто действительно понимает зачем он это делает и какие риски безопасности это влечёт.
Чтобы отключить запрос пароля ПОЛЬЗОВАТЕЛЮ при вводе одной или нескольких КОМАНД с sudo:
ПОЛЬЗОВАТЕЛЬ ALL=(ALL:ALL) NOPASSWD: КОМАНДА1,КОМАНДА2,КОМАНДА3
Чтобы отключить запрос пароля ПОЛЬЗОВАТЕЛЮ при вводе любой команды с sudo:
ПОЛЬЗОВАТЕЛЬ ALL=(ALL:ALL) NOPASSWD: ALL
Чтобы отключить запрос пароля всем пользователям при вводе одной или нескольких КОМАНД с sudo:
%sudo ALL=(ALL:ALL) NOPASSWD: КОМАНДА1,КОМАНДА2,КОМАНДА3
Чтобы отключить запрос пароля всем пользователям при вводе любой команды с sudo:
%sudo ALL=(ALL:ALL) NOPASSWD: ALL
К примеру, чтобы разрешить пользователю admin выполнять команды /home/admin/backup.sh и /usr/bin/apt с sudo без необходимости ввода пароля, нужно добавить строку:
admin ALL=(ALL:ALL) NOPASSWD: /home/admin/backup.sh,/usr/bin/apt
Это конец первой части. Во второй части мы рассмотрим другие интересные настройки и опции команды sudo.