Настройка sudo alt linux
Использование sudo вместо входа в систему с правами root более безопасно, поскольку вы можете предоставлять ограниченные административные привилегии отдельным пользователям, не зная их пароля root.
В этом руководстве мы объясним, как использовать команду sudo .
Установка Sudo (команда sudo не найдена)
Пакет sudo предустановлен в большинстве дистрибутивов Linux.
Если sudo не установлен, вы можете легко установить его с помощью диспетчера пакетов вашего дистрибутива.
Установите Sudo в Ubuntu и Debian
Установите Sudo на CentOS и Fedora
Добавление пользователя в Sudoers
По умолчанию в большинстве дистрибутивов Linux предоставить доступ sudo так же просто, как добавить пользователя в группу sudo, определенную в файле sudoers . Члены этой группы смогут выполнять любую команду от имени пользователя root. Название группы может отличаться от рассылки к рассылке.
В дистрибутивах на основе RedHat, таких как CentOS и Fedora, группа sudo называется wheel . Чтобы добавить пользователя в группу , запустите:
В Debian, Ubuntu и их производных членам группы sudo предоставляется доступ sudo:
Учетная запись пользователя root в Ubuntu по умолчанию отключена из соображений безопасности, и пользователям рекомендуется выполнять системные административные задачи с помощью sudo. Первоначальный пользователь, созданный установщиком Ubuntu, уже является членом группы sudo, поэтому, если вы используете Ubuntu, есть вероятность, что пользователь, с которым вы вошли в систему, уже получил права sudo.
Чтобы разрешить конкретному пользователю запускать только определенные программы как sudo, вместо добавления пользователя в группу sudo добавьте пользователей в файл sudoers .
Например, чтобы позволить пользователю linuxize запускать только команду mkdir как sudo, введите:
и добавьте следующую строку:
В большинстве систем команда visudo открывает файл /etc/sudoers с помощью текстового редактора vim. Если у вас нет опыта работы с vim, ознакомьтесь с нашей статьей о том, как сохранить файл и выйти из редактора vim .
Вы также можете разрешить пользователям запускать команды sudo без ввода пароля :
Как использовать судо
Синтаксис команды sudo следующий:
Команда sudo имеет множество параметров, которые управляют ее поведением, но обычно она используется в самой простой форме, без каких-либо параметров.
Чтобы использовать sudo, просто добавьте к команде префикс sudo :
Sudo прочитает файл /etc/sudoers и проверит, есть ли у вызывающего пользователя sudo Assessment. При первом использовании sudo в сеансе вам будет предложено ввести пароль пользователя, и команда будет выполнена от имени пользователя root.
Например, чтобы перечислить все файлы в /root каталоге /, вы должны использовать:
Тайм-аут пароля
По умолчанию sudo попросит вас снова ввести пароль после пяти минут бездействия sudo. Вы можете изменить время ожидания по умолчанию, отредактировав файл sudoers . Откройте файл с помощью visudo :
Выполнить команду от имени пользователя, отличного от root
Существует ошибочное мнение, что sudo используется только для предоставления прав root обычному пользователю. Фактически, вы можете использовать sudo для запуска команды от имени любого пользователя.
Параметр -u позволяет запускать команду от имени указанного пользователя.
В следующем примере мы используем sudo для запуска команды whoami от имени пользователя «richard»:
Команда whoami напечатает имя пользователя, запустившего команду:
Это происходит потому, что перенаправление вывода « > » выполняется под пользователем, в который вы вошли, а не под пользователем, указанным с помощью sudo. Перенаправление происходит до вызова команды sudo .
Выводы
Вы узнали, как использовать команду sudo и как создавать новых пользователей с привилегиями sudo.
Разделение привилегий — одна из основных парадигм безопасности в операционных системах семейства Linux и Unix. Обычные пользователи работают с ограниченными привилегиями и могут влиять только на собственную рабочую среду, но не на операционную систему в целом.
Специальный пользователь с именем root, имеет привилегии суперпользователя. Это административная учетная запись без ограничений, действующих для обычных пользователей. Пользователи могут выполнять команды с привилегиями суперпользователя или root разными способами.
В этой статье мы обсудим, как правильно и безопасно получать привилегии root, и при этом уделим особое внимание редактированию файла /etc/sudoers .
Мы выполним эти действия на сервере Ubuntu 20.04, но данная процедура будет выглядеть примерно так же и на других современных дистрибутивах Linux, таких как Debian и CentOS.
В этом учебном модуле предполагается, что вы уже выполнили начальную настройку сервера, как было описано здесь. Войдите на сервер как обычный пользователь без прав root и выполните описанные ниже действия.
Примечание. В этом учебном модуле подробно рассказывается об эскалации прав и о файле sudoers . Если вы просто хотите предоставить пользователю права sudo , воспользуйтесь нашими краткими учебными модулями Создание нового пользователя с правами Sudo для Ubuntu и CentOS.
Получение привилегий root
Существует три способа получить привилегии root, различающиеся по сложности.
Войдите в систему как пользователь Root
Самый простой и удобный способ получить привилегии root — просто войти на сервер как пользователь root.
Если вы входите на локальный компьютер (или используете консоль для внеполосного подключения к виртуальному серверу), введите root как имя пользователя в строке входа и пароль пользователя root, когда система его запросит.
Если вы используете для входа SSH, укажите имя пользователя root перед IP-адресом или доменным именем в строке подключения SSH:
Если вы не настроили ключи SSH для пользователя root, введите пароль пользователя root по запросу системы.
Использование su для получения прав root
Следующий способ получить привилегии суперпользователя позволяет становиться пользователем root, когда вам это потребуется.
Для этого можно использовать команду su (substitute user) для замены пользователя. Чтобы получить привилегии root, введите:
Вам будет предложено ввести пароль для пользователя root, после чего будет создан сеанс оболочки root.
После завершения задач, для которых требуются привилегии root, вернитесь в обычную оболочку с помощью следующей команды:
Использование sudo для выполнения команд от имени пользователя root
Последний способ получения привилегий root заключается в использовании команды sudo .
Команда sudo позволяет выполнять разовые команды с привилегиями root без необходимости создавать новую оболочку. Она выполняется следующим образом:
В отличие от su , для команды sudo требуется пароль текущего пользователя, а не пароль пользователя root.
В связи с вопросами безопасности доступ sudo не предоставляется пользователям по умолчанию, и его необходимо настроить перед использованием. Ознакомьтесь с нашими краткими руководствами Создание нового пользователя с привилегиями Sudo для Ubuntu и CentOS, чтобы научиться настраивать нового пользователя с правами sudo .
В следующем разделе мы более подробно расскажем о том, как изменять конфигурацию sudo .
Что такое Visudo?
Команда sudo настраивается с помощью файла, расположенного в каталоге /etc/sudoers .
Предупреждение. Никогда не редактируйте этот файл в обычном текстовом редакторе! Всегда используйте для этой цели только команду visudo !
Неправильный синтаксис файла /etc/sudoers может нарушить работу системы и сделать невозможным получение повышенного уровня привилегий, и поэтому очень важно использовать для его редактирования команду visudo .
Команда visudo открывает текстовый редактор обычным образом, но проверяет синтаксис файла при его сохранении. Это не даст ошибкам конфигурации возможности блокировать операции sudo , что может быть единственным способом получить привилегии root.
Обычно visudo открывает файл /etc/sudoers в текстовом редакторе vi . Однако в Ubuntu команда visudo настроена на использование текстового редактора nano .
Если вы захотите изменить его обратно на vi , используйте следующую команду:
Выберите число, соответствующее желаемому варианту выбора.
В CentOS для изменения этого значения можно добавить следующую строку в
Исходный файл для внесения изменений:
После настройки visudo выполните эту команду для доступа к файлу /etc/sudoers :
Изменение файла Sudoers
Файл /etc/sudoers откроется в выбранном вами текстовом редакторе.
Я скопировал и вставил файл с сервера Ubuntu 18.04 с удаленными комментариями. Файл CentOS /etc/sudoers содержит намного больше строк, и некоторые из них не будут обсуждаться в этом руководстве.
Давайте посмотрим, что делают эти строки.
Строки по умолчанию
Первая строка Defaults env_reset сбрасывает среду терминала для удаления переменных пользователя. Эта мера безопасности используется для сброса потенциально опасных переменных среды в сеансе sudo .
Вторая строка, Defaults mail_badpass , предписывает системе отправлять уведомления о неудачных попытках ввода пароля sudo для настроенного пользователя mailto . По умолчанию это учетная запись root.
Третья строка, начинающаяся с “Defaults secure_path=…”, задает переменную PATH (места в файловой системе, где операционная система будет искать приложения), которая будет использоваться для операций sudo . Это предотвращает использование пользовательских путей, которые могут быть вредоносными.
Строки пользовательских привилегий
Четвертая строка, которая определяет для пользователя root привилегии sudo , отличается от предыдущих строк. Давайте посмотрим, что означают различные поля:
root ALL=(ALL:ALL) ALL Первое поле показывает имя пользователя, которое правило будет применять к (root).
root ALL =(ALL:ALL) ALL Первое “ALL” означает, что данное правило применяется ко всем хостам.
root ALL=( ALL :ALL) ALL Данное “ALL” означает, что пользователь root может запускать команды от лица всех пользователей.
root ALL=(ALL: ALL ) ALL Данное “ALL” означает, что пользователь root может запускать команды от лица всех групп.
root ALL=(ALL:ALL) ALL Последнее “ALL” означает, что данные правила применяются всем командам.
Это означает, что наш пользователь root сможет выполнять любые команды с помощью sudo после ввода пароля.
Строки групповых привилегий
Следующие две строки похожи на строки привилегий пользователя, но задают правила sudo для групп.
Имена, начинающиеся с % , означают названия групп.
Здесь мы видим, что группа admin может выполнять любые команды от имени любого пользователя на любом хосте. Группа sudo имеет те же привилегии, но может выполнять команды от лица любой группы.
Строка Included /etc/sudoers.d
Последняя строка выглядит как комментарий:
Файлы в этом каталоге следуют тем же правилам, что и сам файл /etc/sudoers . Любой файл, который не заканчивается на
и не содержит символа . , также считывается и добавляется в конфигурацию sudo .
В основном это нужно, чтобы приложения могли изменять привилегии sudo после установки. Размещение всех правил в одном файле в каталоге /etc/sudoers.d позволяет видеть, какие привилегии присвоены определенным учетным записям, а также легко сменять учетные данные без прямого изменения файла /etc/sudoers .
Как и в случае с файлом /etc/sudoers , другие файлы в каталоге /etc/sudoers.d также следует редактировать с помощью команды visudo . Для редактирования этих файлов применяется следующий синтаксис:
Присвоение пользователю привилегий Sudo
Чаще всего при управлении разрешениями sudo используется операция предоставления новому пользователю общего доступа sudo . Это полезно, если вы хотите предоставить учетной записи полный административный доступ к системе.
В системе с группой администрирования общего назначения, такой как система Ubuntu в этом учебном модуле, проще всего будет добавить данного пользователя в эту группу.
Например, в Ubuntu 20.04 группа sudo имеет полные привилегии администратора. Добавляя пользователя в эту группу, мы предоставляем ему такие же привилегии:
Также можно использовать команду gpasswd :
Обе команды выполняют одно и то же.
В CentOS эта группа обычно называется wheel , а не sudo :
Также можно использовать gpasswd :
Если в CentOS добавление пользователя в группу не срабатывает сразу же, вам может потребоваться отредактировать файл /etc/sudoers , чтобы убрать символ комментария перед именем группы:
Настройка персонализированных правил
Мы познакомились с общим синтаксисом файла, а теперь попробуем создать новые правила.
Создание псевдонимов
Файл sudoers можно организовать более эффективно, группируя элементы с помощью разнообразных псевдонимов.
Например, мы можем создать три разных группы пользователей с некоторыми общими участниками:
Имена групп должны начинаться с заглавной буквы. Затем мы можем дать участникам группы GROUPTWO разрешение на обновление базы данных apt , создав следующее правило:
Если мы не укажем пользователя или группу для запуска, команда sudo по умолчанию использует пользователя root.
Мы можем дать членам группы GROUPTHREE разрешение на выключение и перезагрузку системы, создав псевдоним команды и используя его в правиле для GROUPTHREE :
Мы создадим псевдоним команды с именем POWER , который будет содержать команды выключения и перезагрузки системы. Затем мы дадим членам группы GROUPTHREE разрешение на выполнение этих команд.
Также мы можем создать псевдонимы запуска от имени, которые могут заменять часть правила, где указывается, от имени какого пользователя следует выполнить команду:
Это позволит любому участнику группы GROUPONE выполнять команды от имени пользователя www-data или пользователя apache .
Необходимо помнить, что в случае конфликта правил более поздние правила имеют приоритет перед более ранними.
Фиксация правил
Есть ряд способов, которые позволяют более точно контролировать реакцию sudo на вызов.
Команда updatedb , связанная с пакетом mlocate , относительно безобидна при ее выполнении в системе с одним пользователем. Если мы хотим разрешить пользователям выполнять ее с привилегиями root без ввода пароля, мы можем создать правило следующего вида:
NOPASSWD — это свойство, означающее, что пароль не запрашивается. У него есть сопутствующее свойство PASSWD , которое используется по умолчанию и требует ввода пароля. Данное свойство актуальной для остальной части строки, если его действие не переопределяется дублирующим тегом в этой же строке.
Например, мы можем использовать следующую строку:
Также полезно свойство NOEXEC , которое можно использовать для предотвращения опасного поведения некоторых программ.
Например, некоторые программы, такие как less , могут активировать другие команды, вводя их через свой интерфейс:
При этом все команды пользователя выполняются с теми же разрешениями, что и команда less , что может быть довольно опасно.
Чтобы ограничить такое поведение, мы можем использовать следующую строку:
Прочая информация
При работе с sudo может быть полезна следующая информация.
Если вы зададите в файле конфигурации пользователя или группу, от имени которых выполняются команды, вы можете выполнять команды от их имени, используя флаги -u и -g соответственно:
Для удобства sudo по умолчанию сохраняет данные аутентификации в течение определенного количества времени на одном терминале. Это означает, что вам не нужно будет вводить пароль снова, пока это время не истечет.
Если в целях безопасности вы захотите сбросить этот таймер после выполнения административных команд, вы можете использовать для этого следующую команду:
Если вы захотите активировать команду sudo так, чтобы не вводить пароль и не продлевать срок действия прав sudo , вы можете ввести:
Вам будет предложено ввести пароль, который будет сохранен для последующего использования sudo до истечения заданного периода действия sudo .
Если вы хотите узнать, какие привилегии заданы для вашего имени пользователя, введите команду:
Она выведет все правила в файле /etc/sudoers , которые относятся к вашему пользователю. Это поможет вам понять, что вам можно делать с помощью sudo от имени любого пользователя.
У вас несомненно будут случаи, когда запущенная команда не будет выполняться, потому что вы забудете добавить префикс sudo . Чтобы не вводить команду повторно, вы можете воспользоваться функцией bash, позволяющей повторить последнюю команду:
Двойной восклицательный знак повторяет последнюю команду. Мы ставим перед ним префикс sudo , чтобы быстро задать соответствующие права для последней команды.
При желании вы можете добавить следующую строку в файл /etc/sudoers с помощью visudo :
После этого sudo будет ругаться, если пользователь введет неправильный пароль для sudo . Мы можем использовать sudo -k , чтобы очистить предыдущий сохраненный в кэше пароль sudo и попробовать эту функцию:
Заключение
Теперь вы понимаете, как читать и редактировать файл sudoers и знаете, какие методы вы можете использовать для получения привилегий root.
Помните, что есть причины, по которым обычным пользователям не предоставляются привилегии суперпользователя. Очень важно точно понимать, что делает каждая команда, которую вы выполняете с правами root. Будьте ответственны. Определите оптимальный способ использования этих инструментов в вашей ситуации и заблокируйте все функции, которые не нужны.
Sudo означает SuperUser DO и используется для доступа к файлам и операциям с ограниченным доступом. По умолчанию Linux ограничивает доступ к определенным частям системы, предотвращая компрометацию конфиденциальных файлов.
Команда sudo временно повышает привилегии, позволяя пользователям выполнять конфиденциальные задачи без входа в систему как пользователь root . В этом руководстве вы узнаете, как использовать команду sudo в Linux с примерами.
Как использовать команду sudo
Установка sudo
Пакет sudo установлен в большинстве дистрибутивов Linux.
Чтобы установить sudo используйте для Ubuntu и Debian:
apt install sudo
или для CentOS и Fedora
yum install sudo
sudo была разработана как способ временного предоставления пользователю административных прав. Чтобы заставить ее работать, используйте sudo перед ограниченной командой, которую можно выполнить только из под рута. Тогда система запросит ваш пароль. После его ввода система запускает команду.
Синтаксис
Опции
sudo можно использовать с дополнительными параметрами:
- -h - отображает синтаксис и параметры команды
- -V - отображает текущую версию приложения sudo
- -v - обновить лимит времени на sudo без запуска команды
- -l - перечисляет права пользователя или проверяет конкретную команду
- -к - завершить текущие привилегии sudo
Дополнительные параметры можно найти с помощью ключа -h .
Примечание. Оставаться в системе как администратор ставит под угрозу безопасность сервера. Раньше администраторы использовали su (substitute user) для временного переключения на учетную запись администратора. Однако для команды su требуется вторая учетная запись пользователя и пароль, что не всегда возможно.
Когда используется команда sudo , в системные журналы заносится метка времени. Пользователь может запускать команды с повышенными привилегиями в течение короткого времени (по умолчанию 15 минут). Если пользователь, не принадлежащий к sudo группе, пытается использовать команду sudo , это регистрируется как событие безопасности.
Предоставление привилегий sudo
Для большинства современных дистрибутивов Linux пользователь должен входить в группу sudo , sudoers или wheel , чтобы использовать команду sudo . По умолчанию однопользовательская система предоставляет своему пользователю права sudo . Система или сервер с несколькими учетными записями пользователей могут исключать некоторых пользователей из привилегий sudo .
Рассмотрим как добавить пользователя в эту группу.
RedHat и CentOS
В Redhat и CentOS wheel группа контролирует пользователей sudo . Добавьте пользователя в группу wheel с помощью следующей команды:
usermod – aG wheel [ username ]
Замените [username] фактическим именем пользователя. Возможно, вам потребуется войти в систему как администратор или использовать команду su .
Debian и Ubuntu
В Debian и Ubuntu группа sudo (sudo group) контролирует пользователей sudo . Добавьте пользователя в группу sudo с помощью следующей команды:
Использование visudo и группы sudoers
В некоторых современных версиях Linux пользователи добавляются в файл sudoers для предоставления привилегий. Это делается с помощью команды visudo .
Используйте команду visudo для редактирования файла конфигурации:
Это откроет /etc/sudoers для редактирования. Чтобы добавить пользователя и предоставить полные права sudo , добавьте следующую строку:
В этой инструкции я покажу вам, как дать root права пользователю в системе Linux. Как правило, доступ на корневом уровне (root) используется в системном администрировании. Поэтому всегда больно давать root-доступ другим пользователям. Вы должны быть очень осторожны и должны забрать доступ, как только необходимость в этом отпадет.
Как дать Root права пользователю в Linux
Способ 1: Добавление в корневую группу с помощью usermod
Давайте посмотрим, как мы можем дать обычному пользователю root- права, добавив его в корневую группу.
Это группы, которые есть в моей дистрибутиве Linux.
Я собираюсь добавить user1 в корневую группу следующим образом:
Приведенная ниже команда даст пользователю привилегию root
Способ 2: Добавление в корневую группу с помощью команды Useradd
useradd -c “Imitation Root” -d /home/root_user -m -k /etc/skel -s /bin/bash -u 0 -o -g root root_user
Способ 3: Редактирование файла /etc/passwd
Теперь пользователь temproot должен иметь привилегии root:
ВНИМАНИЕ: это не рекомендуемый метод предоставления корневого доступа (root-прав)
Способ 4: Дать права пользователя Sudo
Использование visudo защищает от конфликтов и гарантирует использование правильного синтаксиса.
Чтобы предоставить полный доступ конкретным пользователям
Добавьте в файл запись, приведенную ниже:
Следовать этому методу не очень хорошая идея, потому что это позволяет и User1, и User2 использовать команду su для предоставления постоянных привилегий root. Таким образом пропуская функции ведения журнала команд sudo.
Предоставление доступа к определенным файлам одному конкретному пользователю
User1, %operator ALL= /sbin/, / usr/sbin, /usr/oracle/backup.pl
Если у вас есть какие-либо вопросы или предложения по этой теме, оставьте комментарий.
Читайте также: