Ограничить пользователя для запуска определенной команды 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 с моим собственным паролем в Scientific Linux / Red Hat / Fedora / CentOS
  • Bash завершение параметров при использовании sudo
  • Как я могу заставить sudo забыть пароль автоматически после одной команды?
  • Вызов скрипта с sudo игнорирует shebang
  • Чтение с / dev / устройств ввода без прав root
  • Предоставление «нормальной» возможности пользователя монтировать диск (visudo)
  • gkSudo Ошибка, независимо от того, что я делаю
  • Может ли vim редактировать удаленный файл с правами root?
  • 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 - лучшая ОС в мире.