Назад | Перейти на главную страницу

Разрешить сложную команду sudo в Debian Linux

Мне нужно разрешить конкретную команду в Debian Linux для одного пользователя. Я пробовал это в /etc/sudoers файл:

# User privilege specification
zabbix  ALL=NOPASSWD: /usr/bin/apt-get --print-uris -qq -y upgrade 2>/dev/null |awk '{print $2}' | wc | awk '{print $1}'

Это не работает должным образом. Если я запускаю команду от имени пользователя zabbix с sudo, она запрашивает пароль (хотя я указал NOPASSWD вариант).

Однако это работает:

# User privilege specification
zabbix  ALL=NOPASSWD: /usr/bin/apt-get

Но есть недостаток в том, что все подкоманды apt-get разрешены. Есть ли способ исправить это, чтобы разрешить только определенную команду?

Вы, вероятно, не согласны с тем, как перенаправление взаимодействует с sudo. Перенаправление выполняется для вызывающего пользователя, а не для привилегированного пользователя. Вероятно, вам будет проще обернуть команду в скрипт, а затем позволить пользователю zabbix запускать этот скрипт, например.

#!/bin/bash
/usr/bin/apt-get --print-uris -qq -y upgrade 2>/dev/null |awk '{print $2}' | wc | awk '{print $1}'

набор sudoers как

zabbix  ALL=NOPASSWD: /path/to/script

Теперь весь сценарий будет запускаться от имени привилегированного пользователя, а не только конкретная команда apt-get. Однако убедитесь, что пользователь zabbix не может писать в скрипт.

Я не согласен с ложью. Хотя это сработает, Вам не нужно awk запускать как root. Мне было бы неудобно с этим, потому что вы могли бы атаковать awk каким-то образом. В конце концов, это полноценный интерпретатор языка программирования.

Когда один бежит sudo /usr/bin/apt-get --print-uris -qq -y upgrade 2>/dev/null |awk '{print $2}' | wc | awk '{print $1}', Они действительно работают sudo /usr/bin/apt-get --print-uris -qq -y upgrade а затем подключение / перенаправление в качестве вызывающего пользователя.

Попробуй это: zabbix ALL=NOPASSWD: /usr/bin/apt-get --print-uris -qq -y upgrade

Между прочим, нет ничего плохого в том, чтобы поместить это в сценарий, как это делает lain, и вы все равно можете это сделать. Я бы просто избегал запускать awk с правами root, если это возможно.