Как проверить правильность конфигурации sudo без пароля от пользователя A к пользователю B, из сеанса пользователя B

Вы можете попробовать подробный режим, выбран последний из упомянутых файлов baseurl или * .repo , упомянутых в выводе консоли. Обычно, если репозиторий содержит указанную программу в метаданных XML, он "нашел" программу с помощью вашей команды install .

Посмотрите следующий ответ, чтобы узнать, как yum работает внутри: https://www.redhat.com/archives/rhl-list/2008-January/msg02246.html

1
30.06.2017, 19:38
2 ответа

Вы не можете сделать это, проанализировав файлы конфигурации sudo, потому что конфигурация sudo доступна для чтения только пользователю root. Даже если бы вы могли прочитать конфигурацию sudo, ее трудно надежно (проанализировать, особенно для обработки не -локальной информации, такой как базы данных LDAP ), и она не рассказывает всей истории (, например. разрешение может быть предоставлено через группу ).

Единственной реалистичной проверкой является запуск sudoот имени пользователя A. Поскольку вам нужно выполнить эту проверку из сценария, работающего от имени пользователя B, вам потребуется способ, с помощью которого пользователь B может запустить проверку от имени пользователя A. Либо напишите небольшую программу(не скрипт с setuid A, или дайте пользователю B разрешение запускать проверку от имени пользователя A через sudo.

Если вы не можете привлечь администратора для настройки правила sudo, позволяющего пользователю B запускать проверку от имени A, то программа setuid — единственное решение. Эта программа вызовет sudo -u userB -b true, чтобы проверить, что A разрешено запускать trueот имени пользователя B. Вот исходный код C для этой программы (предупреждение :не проверено!):

#include <unistd.h>
int main(void) {
    execl("/usr/bin/sudo", "sudo", "-u", "userB", "-b", "/bin/true", (char*)NULL);
    return 126;
}

Скомпилируйте его и сделайте полученный исполняемый файл setuid A (он должен принадлежать A, затем запуститеchmod 4755 /path/to/executable).

Обратите внимание, что это решение не является полным. :Оно будет работать только в том случае, если A разрешено запускать команды от имени B в силу того, что он является пользователем A, а не в том случае, если он получает эту привилегию в силу принадлежности к группе. Если вам нужно проверить членство в группе, вам нужно будет запустить sgот имени пользователя А, чтобы получить членство в этой группе, а затем запустить его sudo.

2
27.01.2020, 23:24

В этом вопросе вы поднимаете два разных вопроса.

  1. Как разрешить/проверить привилегии sudo для пользователя A
    Ссылка на домашнюю страницу проекта Sudo

  2. Как просмотреть настройки sudo от имени пользователя B (, а не root)

#1 можно выполнить, углубившись в документацию для /etc/sudoers и связанных файлов sudo и команды. У меня нет опыта ограничения команд одним пользователем в качестве другого пользователя, не являющегося -root, поэтому я не могу точно сказать, за исключением того, что я случайно знаю, что это можно сделать.

#2 полностью проблема с разрешениями конфигураций для sudo, таких как /etc/sudoers /etc/sudo.conf /etc/sudoers.d/ *и т. д. В моих системах эти файлы находятся в режиме -r--r-----. root rootВаш пользователь B не смог бы их прочитать без:

  1. быть членом корневой группы
  2. обращение к системному администратору с просьбой изменить эти разрешения.

Это так просто; без одной из этих двух вещей пользователь B не сможет прочитать или проанализировать файл.

1
27.01.2020, 23:24

Теги

Похожие вопросы