Добавление пользователей в sudoers через оболочку script

Можно ли добавлять пользователей в файл sudoers через оболочку script? Я смотрю вокруг, все еще ничего не могу найти.

Ответ 1

Вы можете просто echo (с повышенными привилегиями, конечно) непосредственно в файле /etc/sudoers:

sudo -i
echo 'nickw444  ALL=(ALL:ALL) ALL' >> /etc/sudoers
#             ^^
#             tab

(обратите внимание на символ табуляции между именем пользователя и первым ALL)

Или, для a script:

#!/bin/bash
# Run me with superuser privileges
echo 'nickw444  ALL=(ALL:ALL) ALL' >> /etc/sudoers

Затем сохраните до somefile.sh, chmod a+rx и запустите sudo ./somefile.sh из окна терминала.

Чтобы добавить нескольких пользователей, измените script на это:

#!/bin/bash

while [[ -n $1 ]]; do
    echo "$1    ALL=(ALL:ALL) ALL" >> /etc/sudoers;
    shift # shift all parameters;
done

Затем запустите script следующим образом (если вы сохранили его как addsudousers.sh):

sudo ./addsudousers.sh bob joe jeff

то есть разделенные пробелами.

Чтобы прочитать имена из файла:

[email protected] ~ $ sudo ./addsudousers.sh `cat listofusers.txt`

listofusers.txt также должен быть разделен пробелом.

Изменить: Jappie Kirk правильно указывает, что вы не можете напрямую вызвать sudo echo ... >> /etc/sudoers, потому что перенаправление >> обрабатывается оболочка, которая к этому моменту опустила привилегии суперпользователя. Однако, если вы запустите script, который содержит echo ... >> /etc/sudoers, а сам script имеет привилегии суперпользователя, все должно работать нормально.

Ответ 2

Нет, прямое эхо не будет работать, вы должны запустить его в подоболочке. Вместо этого попробуйте:

sudo sh -c "echo \"group ALL=(user) NOPASSWD: ALL\" >> /etc/sudoers"

Ответ 3

Существует также группа sudo, и вы можете добавить в нее пользователей (для обычных конфигураций /etc/sudoers)

adduser [имя пользователя] sudo

Ответ 4

в Использование Red Hat на основе:

su - root

и введите свой пароль, затем:

echo 'YOURUSERNAME ALL=(ALL:ALL) ALL' >> /etc/sudoers

чтобы добавить пользователя в файл sudoers.

Ответ 5

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

После входа в систему вы можете попробовать следующие команды ниже:

  • Создайте нового пользователя.

    adduser [имя пользователя]

  • Добавить пароль для пользователя

    passwd [имя пользователя]

  • Предоставить пользователю права root Отредактируйте файл visudo, просто набрав

    введите здесь код

Найдите следующую строку кода: root ALL = (ВСЕ) ВСЕ

Затем добавьте следующий код:

[username] ALL=(ALL) ALL

Оригинальное сообщение будет найдено по этой ссылке Centos 6 - Создание пользователя sudoers

Ответ 6

Другие ответы, такие как размножение подоболочки, будут работать, но могут не работать, если вы хотите использовать экологические вары. Одна из альтернатив, которую я нашел, сыграла очень хорошо для меня:

echo "%<user>      ALL=(ALL) ALL" | sudo tee -a /etc/sudoers > /dev/null

Сказав это, задним числом 20/20... Если вы модифицируете sudoers через script, а не через visudo, я бы серьезно рекомендовал создать резервную копию с правильными разрешениями и содержимым файлов сначала, так как вы можете потерять доступ к любому sudo права без pkexec, физический доступ или перезагрузка и т.д.

sudo cp /etc/sudoers /etc/sudoers.bak

Ответ 7

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

useradd -p $ (OpenSSL PASSWD -1 ПАРОЛЬ) USERNAME -s/бен/Баш -G Судо