Ограничить пользователя для запуска определенной команды sudo

Вот сценарий:

#!/bin/bash user='my_sudo_user' sudo -lU $user 

Я пытался ограничить свой non_sudo_user возможностью запуска этого скрипта. Используя visudo , я попробовал:

 non_sudo_user ALL=(ALL) NOPASSWD: /bin/bash /full/path/script.sh non_sudo_user ALL=(ALL) NOPASSWD: /usr/bin/sudo -lU non_sudo_user ALL=(ALL) NOPASSWD: /usr/bin/sudo -lU * # unsafe 

Ни один из них не работает. Я получаю это сообщение:

 Sorry, user non_sudo_user is not allowed to execute 'list' as my_sudo_user on host123. 

Но я представил -l в файле sudoer .

Что я могу сделать? Кстати, это Ubuntu.

EDIT :

Я действительно запускаю этот скрипт:

 for u in $(awk -F'[/:]' '{if($3>=1000&&$3!=65534) print $1}' /etc/passwd); do sudo -lU $u ; done 

Поэтому у меня нет определенного списка пользователей раньше времени.

  • Проблемы безопасности
  • программа должна выполняться как root любым пользователем и может быть расположена в любом месте
  • Как создать исполняемый скрипт bash для этих команд?
  • запускать команду как другого пользователя с доступными разрешениями sudo
  • Не удается запустить su после изменения прав доступа к файлу su
  • Этот пользователь в настоящее время недоступен - но разрешить запуск скрипта этим пользователем
  • Добавить пользователя теста в файл sudoers, для запуска ifconfig
  • Выполнять команды как другого пользователя без пароля - sudo не удается?
  • 2 Solutions collect form web for “Ограничить пользователя для запуска определенной команды sudo”

    EDIT: полностью переписать после того, как OP предоставила дополнительную информацию.

    Укажите пользователя в / etc / sudoers как имеющее разрешение на выполнение /usr/sbin/sudo .

    Это позволит им выполнить команду sudo, но у них не будет никаких прав для запуска каких-либо других команд.

    Я просто тестировал это на CentOS-7.3.1611 с совершенно новой учетной записью пользователя:

    testusr ALL=(ALL) NOPASSWD: /usr/sbin/sudo

    Я не знаю, есть ли какие-либо последствия для безопасности для указания самой команды sudo в списке разрешенных команд. Пожалуйста, просмотрите и протестируйте, прежде чем полагаться на это в производственной среде … это может быть небезопасно.

    Я думаю, вы можете только перечислять команды, которые может выполнять другой пользователь, если вы можете запускать произвольные команды как (ВСЕ) этого пользователя. Поэтому вместо этого …

    В суде:

     non_sudo_user ALL=(ALL) NOPASSWD: /usr/bin/sudo -l 

    И чтобы их перечислить, работая как non_sudo_user :

     for target_user in user1 user2 user3... ; do sudo -u "$target_user" sudo -l done 
    Linux и Unix - лучшая ОС в мире.