6

(На Сентосе через Докер)

Я знаю, что я могу добавить sudoer, используя visudo . Есть ли способ добавить пользователя в список sudoer прямо из командной строки, поэтому мне не нужно делать это в интерактивном режиме?

Я спрашиваю, потому что я пытаюсь подготовить мой контейнер Docker Centos, который не играет с интерактивностью.

6 ответов6

6

У меня была похожая проблема, когда я пытался заставить свой док-контейнер разрешить сценариям jenkins использовать команды sudo без запроса пароля.

Это было решено с помощью Dockerfile:

RUN echo "jenkins ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
2

Чтобы сделать это, вы должны убедиться, что в вашем файле sudoers есть следующая строка:

%sudo   ALL=(ALL:ALL) ALL

Вы можете настроить приведенную выше строку, чтобы изменить разрешения так же, как если бы %sudo был пользователем. Эта строка позволит всем пользователям в группе sudo использовать sudo .

Теперь, чтобы разрешить <username> использовать sudo , вы можете просто выполнить usermod -a -G sudo <username> качестве пользователя root, который добавляет <username> в группу sudo .

2

Вы можете использовать cat для добавления текста в конец /etc/sudoers . Сначала создайте резервную копию вашего файла /etc/sudoers . Затем:

cat >> /etc/sudoers
...type one or more lines here...
[control-D]

Обязательно используйте два символа «больше» (>>), а не только один, иначе вы перезапишете все содержимое вашего файла.

1

Общим условием для добавления к файлам, которые требуют привилегированного доступа, является использование tee . Его основная цель, конечно, состоит в том, чтобы писать в два места, но вы можете отказаться от одного из них и использовать побочный эффект, который sudo tee -a дает вам привилегированное добавление.

Итак, что-то вроде

printf 'you ALL=(ALL:ALL) ALL\n' | sudo tee -a /etc/sudoers >/dev/null

Я согласен с комментариями, чтобы вместо этого добавить пользователя в группу sudoers для решения этой конкретной проблемы.

0

Вы можете начать с включения группы «wheel» в sudoers, и после этого вам нужно только добавить пользователей в эту группу. Предотвращает свертывание файла sudoers.

0

На момент создания пользователя вы можете указать пользователя, которому принадлежит группа sudo, следующим образом:

useradd --groups sudo someone

Если это уже существующий пользователь, вы можете добавить его в новую группу следующим образом:

gpasswd --add someone sudo

Посмотрите этот ответ, если вы хотите узнать, почему я предпочитаю gpasswd usermod .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .