Вот код скрипта, который я сейчас использую:
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
он не работает должным образом (потому что я только что принял значение по умолчанию).
Благодарность
man useradd
): useradd - утилита низкого уровня для добавления пользователей. В Debian администраторы обычно должны использовать вместо этого adduser (8).sudo su -c "cmd arg1 arg2"
эквивалентноsudo cmd arg1 arg2
.sudo su -c "cmd arg1 arg2"
так, чтобы он работал везде, где мне нужно, чтобы он работал.adduser
это Perl- скрипт длиной более 1000 строк, поэтому для различий вы можете взглянуть на скрипт.adduser
но я не знаю Perl. Так что это не очень хороший подход для меня.Ответы:
Мое решение было представлено здесь: /unix/82923/proper-way-to-add-a-user-account-via-bash-script по Ульриху Шварцу и Джозеф Р. . Главное, что мне нужно было сделать, это добавить
-s /bin/bash
к существующейuseradd
команде и удалить,-p password
которая ожидает зашифрованный пароль.Затем сделайте это:
источник
echo mynewuser:password | sudo chpasswd
тоже работаетЭто будет работать
источник
мой скрипт, который автоматически создает учетную запись службы с логином ssh и без пароля
источник
Я полагаю, вы можете просто использовать условие в вашем скрипте, что-то вроде
(невозможно проверить, присутствует ли файл
/etc/issue
в OpenSUSE, в противном случае вы можете поставить условие существования такого файла).источник
adduser
сif command -v adduser >/dev/null; then
или нравится? Это единственное, что имеет значение, а не основные дистрибутивы. Кроме того, есть и другие дистрибутивы, кроме Debian / Ubuntu и OpenSUSE.