Вот код скрипта, который я сейчас использую:
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
ничего не возвращает) Если вместо этого я создаю вручную пользователь с adduser
(вместо useradd) у меня нет этих проблем в Ubuntu. Но я не могу использовать adduser
на openSuse (afaik). Поэтому мне нужен не-Debian-эксклюзивный скрипт или метод добавления учетных записей пользователей через мой bash-скрипт, который работает в Ubuntu (и не перестает работать в других дистрибутивах).
Наконец, я хотел бы понять различия между adduser
и useradd
. Например, я хочу знать, какой каталог каркаса используется adduser
, поскольку это может быть причиной того, что useradd
не работает должным образом (потому что я только что принял значение по умолчанию).
Спасибо
Мое решение было предоставлено здесь: 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
Это будет работать.
sudo adduser myuser --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password
echo "myuser:password" | sudo chpasswd
мой сценарий, который автоматически создает учетную запись службы с ключом 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
Я полагаю, вы можете просто использовать условие в своем скрипте, например,
if grep -q 'Ubuntu\|Debian' /etc/issue; then
adduser .....
else
useradd .....
fi
(невозможно проверить, присутствует ли файл / etc / issue
в OpenSUSE, иначе вы может поставить условие существования такого файла).