Můžete použít chpasswd
udělat to takto:
echo "username:newpassword" | chpasswd
Můžete použít kanál chpasswd
z jiných programů než echo
, pokud je to vhodné, ale bude to stačit.
Upravit:Chcete-li vygenerovat heslo v rámci skriptu shellu a poté jej nastavit, můžete udělat něco takového:
# Change username to the correct user:
USR=username
# This will generate a random, 8-character password:
PASS=`tr -dc A-Za-z0-9_ < /dev/urandom | head -c8`
# This will actually set the password:
echo "$USR:$PASS" | chpasswd
Další informace o chpasswd
, viz http://linux.die.net/man/8/chpasswd
(Příkaz pro vygenerování hesla byl z http://nixcraft.com/shell-scripting/13454-command-generate-random-password-string.html)
Pro vygenerování náhodného hesla (v tomto případě 16 znaků) můžete použít OpenSSL:
# 1000 bytes should be enough to give us 16 alphanumeric ones
p=$(openssl rand 1000 | strings | grep -io [[:alnum:]] | head -n 16 | tr -d '\n')
Poté vložte hashované heslo na useradd
nebo usermod
# omit the "-1" if you want traditional crypt()
usermod -p $(openssl passwd -1 "$p") <username>
EDIT:
Od zveřejnění tohoto v roce 2012 přidaly novější verze OpenSSL funkcionalitu do openssl passwd
příkaz. Místo použití -1
možnost získat hash založený na MD5, moderní verze také podporují -5
pro hash založené na SHA256 a -6
pro hash založené na SHA512.
Připsání připsání:Generování hesla je přizpůsobeno podobné metodě, která používá /dev/urandom
místo openssl
.
useradd by mělo fungovat (udělal jsem to na Ubuntu). Možná zkontrolujte, zda jsou všechny vaše argumenty správné (existují skupiny, cesta je správná k bash). Příkaz můžete spustit pouze s heslem a uživatelem a poté použít userdel odstranit a pak to zkusit znovu s více parametry, abyste viděli, co způsobuje problém (přístup hrubou silou).
Existují také noví uživatelé (viz manuálová stránka), alespoň pod Ubuntu, kde mu dáte soubor s passwd file like info, včetně hesel ve formátu prostého textu a ono vytvoří ty uživatele. Pěkný způsob, jak dělat mnoho uživatelů najednou.