2016-12-14 4 views
0

Я думаю, что я достаточно близок к проверке того, принадлежит ли пользователь группе sudo в Ubuntu, а затем добавляет строку в файл sudoers. Кроме случаев, когда я смотрю в файле sudoers, я вижу:Сценарий, проверяющий, принадлежит ли пользователь группе sudo

$IDUSER ALL=NOPASSWD: /usr/local/sbin/myscript 

вместо этого имени пользователей, например.

bob ALL=NOPASSWD: /usr/local/sbin/myscript 

Вот что у меня есть:

#! /bin/sh 

set -e 

IDUSER=$(grep -Po '^sudo.+:\K.*$' /etc/group) 

if [ `id -u $IDUSER 2>/dev/null || echo -1` -ge 0 ]; then 
    echo '$IDUSER ALL=NOPASSWD: /usr/local/sbin/myscript' >> /etc/sudoers 

else 
    echo "Script failed..." 
fi 

В идеале, я хотел бы добавить всех пользователей в группе SUDO в файл sudoers.

спасибо.

+0

Хм, зачем вам это нужно? Я думаю, что вы можете ссылаться на всех членов группы в одной строке, например, на '% sudoers', а не на имя пользователя, но должны тщательно проверять документы. –

ответ

0

В одинарных кавычках ' переменные bash не расширяются. Используйте двойные кавычки " вместо этого в строке с echo.

Если вы просто пытаетесь позволить пользователям в группе Судо запустить эту команду, хотя, просто добавьте строку:

%sudo ALL=NOPASSWD: /usr/local/sbin/myscript 

в файл /etc/sudoers. Знак % обозначает группу.

+0

Спасибо Крису, что сделал трюк. Любые предложения по добавлению всех пользователей в группе sudo в файл sudoers с использованием вышеуказанного скрипта? –

+0

Отлично, спасибо. –

+0

@sh_newbie Я добавил некоторую информацию в свой ответ. Ваш скрипт выполнит эту работу как написанную (хотя она будет раздражать такие вещи, как повторяющиеся строки, если вы запускаете ее дважды, и могут быть некоторые тонкие ошибки), но обычно лучше не изменять файл sudoers в любом скрипте - это довольно просто чтобы что-то прикрутить. – Chris

Смежные вопросы