Oto kod skryptu, którego teraz używam:
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"
To podejście działa dobrze w openSuse. Ale istnieje kilka problemów z kontem użytkownika, które tworzy na Ubuntu, więc szukam tutaj pomocy.
- monit terminala nie jest ustawiony (
echo $PS1
nic nie zwraca) - klawisze strzałek i klawisz tab nie działają poprawnie w terminalu
- hasło nie działa (chociaż nadal nie jestem do końca jasne, na czym polega ten problem)
- prawa / etc / sudoers ustawione dla tego nowego użytkownika nie są honorowane
Jeśli zamiast tego ręcznie utworzę użytkownika za pomocą adduser
(zamiast useradd), nie mam tych problemów na Ubuntu. Ale nie mogę używać adduser
na openSuse (afaik). Dlatego potrzebuję niewyłącznego dla Debiana skryptu lub metody dodawania kont użytkowników za pomocą mojego skryptu bash, który działa na Ubuntu (i nie przestaje działać na innych dystrybucjach).
Na koniec chciałbym zrozumieć różnice między adduser
i useradd
. Na przykład chcę wiedzieć, który katalog szkieletowy jest używany, adduser
ponieważ może to być przyczyną, że useradd
nie działa zgodnie z oczekiwaniami (ponieważ właśnie zaakceptowałem domyślny).
Dzięki
man useradd
): useradd to narzędzie niskiego poziomu do dodawania użytkowników. W Debianie administratorzy zwykle powinni zamiast tego używać adduser (8).sudo su -c "cmd arg1 arg2"
jest równoważne zsudo cmd arg1 arg2
.sudo su -c "cmd arg1 arg2"
, aby działał wszędzie, gdzie go potrzebuję.adduser
jest skryptem perla o długości przekraczającej 1000 wierszy, więc dla różnic możesz zajrzeć do skryptu.adduser
ale nie znam perla. To nie jest dla mnie dobre podejście.Odpowiedzi:
Moje rozwiązanie dostarczono tutaj: /unix/82923/proper-way-to-add-a-user-account-via-bash-script przez Ulrich Schwarz i Joseph R. . Najważniejsze, co musiałem zrobić, to dodać
-s /bin/bash
do mojego istniejącegouseradd
polecenia i usunąć,-p password
który oczekuje zaszyfrowanego hasła.Następnie zrób to:
źródło
echo mynewuser:password | sudo chpasswd
też działa.To zadziała.
źródło
mój skrypt, który automatycznie tworzy konto usługi z logowaniem klucza ssh i bez hasła
źródło
Podejrzewam, że możesz po prostu użyć warunku w skrypcie, na przykład
(nie może zweryfikować, czy plik
/etc/issue
jest obecny w OpenSUSE, w przeciwnym razie możesz postawić warunek istnienia takiego pliku).źródło
adduser
zif command -v adduser >/dev/null; then
lub podobnych? To jedyna rzecz, która ma znaczenie, a nie podstawowe dystrybucje. Istnieją także inne dystrybucje poza Debian / Ubuntu i OpenSUSE.