Добавление пользователей в sudoers с помощью сценария оболочки - PullRequest
25 голосов
/ 09 января 2012

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

Ответы [ 7 ]

42 голосов
/ 09 января 2012

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

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

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

Или, для сценария:

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

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

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

#!/bin/bash

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

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

sudo ./addsudousers.sh bob joe jeff

то есть через пробел.

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

nickw444@laptop ~ $ sudo ./addsudousers.sh `cat listofusers.txt`

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

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

9 голосов
/ 18 июня 2014

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

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

6 голосов
/ 09 января 2012

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

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

1 голос
/ 10 января 2016

на На основе RedHat Использование распределений:

su - root

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

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

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

0 голосов
/ 26 сентября 2018

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

useradd -p $ (openssl passwd -1 ПАРОЛЬ ) ИМЯ ПОЛЬЗОВАТЕЛЯ -s / bin / bash -G sudo

0 голосов
/ 06 января 2016

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

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

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

sudo cp /etc/sudoers /etc/sudoers.bak
0 голосов
/ 21 сентября 2015

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

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

  1. Создатьновый пользователь.

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

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

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

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

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

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

Затем добавьте этот код ниже:

[username] ALL=(ALL) ALL

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

...