Spustil jsem useradd {user}
příkaz k přidání uživatelů do mého systému, i když plánuji spuštění v automatizovaném prostředí a může skončit opětovným spuštěním, přestože uživatel již existuje.
Existuje způsob, jak to spustit, pouze pokud uživatel již neexistuje? Uživatel nemá domovskou složku.
id -u somename
vrací nenulový výstupní kód, když uživatel neexistuje.
Můžete to jednoduše vyzkoušet ... (&>/dev/null
pouze potlačí normální výstup/varování)
id -u somename &>/dev/null || useradd somename
zkuste to:
useradd {user} || echo "User already exists."
nebo dokonce toto:
useradd {user} || true
Pokud nemáte jen malou hrstku systémů, kladete špatnou otázku. Odpověď není spouštět useradd vůbec, ale místo toho nechat tuto práci na řešení pro správu konfigurace, jako je loutka nebo kuchař. Umožní vám to centralizovat vaše uživatelské definice a zabránit vám ve spouštění smyček a používání ssh s uživateli root za účelem konfigurace vašich systémů. Vždy budete mít systémy ve známém stavu konfigurace.
Dokumentace pro loutky je k dispozici na http://docs.puppetlabs.com
Jako příklad v loutce:
user { "bob" :
password => "$1$yv3n066X$Vpb05Ac/fHTicNdT9T5vz1", # generated with `openssl passwd -1`
ensure => present, # ensure => absent to remove
managehome => true,
}
useradd by uživatele nepřidal, pokud již existuje, má v úmyslu zajistit, aby uid number a uid login byly jedinečné. Pokud plánujete spustit dávku, ujistěte se, že použité uidy jsou jedinečné; useradd by si stěžoval na problematické položky a je třeba zachytit chyby/stderr, abyste zjistili, které uživatelské účty měly problémy se vstupem do systémů účtů (/ etc/passwd, group, shadow).