Вы можете попробовать подробный
режим, выбран последний из упомянутых файлов baseurl
или * .repo
, упомянутых в выводе консоли. Обычно, если репозиторий содержит указанную программу в метаданных XML, он "нашел" программу с помощью вашей команды install
.
Посмотрите следующий ответ, чтобы узнать, как yum работает внутри: https://www.redhat.com/archives/rhl-list/2008-January/msg02246.html
Вы не можете сделать это, проанализировав файлы конфигурации 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
.
В этом вопросе вы поднимаете два разных вопроса.
Как разрешить/проверить привилегии sudo для пользователя A
Ссылка на домашнюю страницу проекта Sudo
Как просмотреть настройки sudo от имени пользователя B (, а не root)
#1 можно выполнить, углубившись в документацию для /etc/sudoers и связанных файлов sudo и команды. У меня нет опыта ограничения команд одним пользователем в качестве другого пользователя, не являющегося -root, поэтому я не могу точно сказать, за исключением того, что я случайно знаю, что это можно сделать.
#2 полностью проблема с разрешениями конфигураций для sudo, таких как /etc/sudoers /etc/sudo.conf /etc/sudoers.d/ *и т. д. В моих системах эти файлы находятся в режиме -r--r-----. root root
Ваш пользователь B не смог бы их прочитать без:
Это так просто; без одной из этих двух вещей пользователь B не сможет прочитать или проанализировать файл.