Правильный способ добавить учетную запись пользователя через скрипт bash

Вот код скрипта, который я сейчас использую:

getent group $MYGROUP
if [ $? -ne 0 ] ; then
    sudo su -c "groupadd $MYGROUP"
fi
sudo su -c "useradd mynewuser -p mypassword -m -g $PRIMARYGRP -G $MYGROUP"

Этот подход хорошо работает на openSuse. Но есть несколько проблем с учетной записью пользователя, которую он создает в Ubuntu , поэтому я ищу здесь помощь.

  • подсказка терминала не установлена ​​(echo $PS1 ничего не возвращает)
  • клавиши со стрелками и клавиши табуляции не работают правильно в терминале
  • пароль не работает похоже, работает (хотя мне все еще неясно, в чем конкретно заключается эта проблема)
  • права / etc / sudoers, установленные для этого нового пользователя, не соблюдаются

Если вместо этого я создаю вручную пользователь с adduser (вместо useradd) у меня нет этих проблем в Ubuntu. Но я не могу использовать adduser на openSuse (afaik). Поэтому мне нужен не-Debian-эксклюзивный скрипт или метод добавления учетных записей пользователей через мой bash-скрипт, который работает в Ubuntu (и не перестает работать в других дистрибутивах).

Наконец, я хотел бы понять различия между adduser и useradd. Например, я хочу знать, какой каталог каркаса используется adduser, поскольку это может быть причиной того, что useradd не работает должным образом (потому что я только что принял значение по умолчанию).

Спасибо

17
задан 13 April 2017 в 15:14

4 ответа

Мое решение было предоставлено здесь: https://unix.stackexchange.com/questions/82923/proper-way-to-add-a-user-account-via-bash -скрипт Авторы Ульрих Шварц и Джозеф Р. . Главное, что мне нужно было сделать, это добавить -s / bin / bash к моей существующей команде useradd и удалить -p password , который ожидает зашифрованный пароль.

sudo su -c "useradd mynewuser -s /bin/bash -m -g $PRIMARYGRP -G $MYGROUP"

Затем сделайте следующее:

sudo chpasswd << 'END'
mynewuser:password
END
17
ответ дан 13 April 2017 в 15:14

Это будет работать.

sudo adduser myuser --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password
echo "myuser:password" | sudo chpasswd
12
ответ дан 13 April 2017 в 15:14

мой сценарий, который автоматически создает учетную запись службы с ключом ssh для входа в систему и без пароля

#add service group/user
addgroup service-runner
useradd devops-service --create-home --shell /bin/bash --groups service-runner
#gpasswd -a devops-service sudo #allowing sudo requires password, and not a good idea for a service account.
mkdir /home/devops-service/.ssh
chmod 700 /home/devops-service/.ssh
cat devops-service@v2-20150312.pub >> /home/devops-service/.ssh/authorized_keys
chown devops-service:devops-service /home/devops-service -R
2
ответ дан 13 April 2017 в 15:14

Я полагаю, вы можете просто использовать условие в своем скрипте, например,

if grep -q 'Ubuntu\|Debian' /etc/issue; then
    adduser .....
else
    useradd .....
fi

(невозможно проверить, присутствует ли файл / etc / issue в OpenSUSE, иначе вы может поставить условие существования такого файла).

0
ответ дан 13 April 2017 в 15:14

Другие вопросы по тегам:

Похожие вопросы: