Вы можете использовать опцию -p.
useradd -p encrypted_password newuser
К сожалению, для этого требуется, чтобы вы хэшировали пароль самостоятельно (где passwd сделает это за вас). К сожалению, не существует стандартной утилиты для хеширования некоторых данных, поэтому вам придется написать это самостоятельно.
Вот небольшой скрипт на Python, который я выбрал, чтобы сделать шифрование для вас. Предполагая, что вы назвали его pcrypt, вы бы написали приведенную выше командную строку по адресу:
useradd -p $(pcrypt ${passwd}) newuser
Несколько предупреждений, о которых следует знать.
- Во время работы pcrypt открытый текст будет виден любому пользователю с помощью команды ps.
- pcrypt использует функцию шифрования старого стиля - если вы используете что-то более современное, например, хеш MD5, вам нужно изменить pcrypt.
и вот код:
#!/usr/bin/env python
import crypt
import sys
import random
saltchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
def salt():
return random.choice(saltchars) + random.choice(saltchars)
def hash(plain):
return crypt.crypt(arg, salt())
if __name__ == "__main__":
random.seed()
for arg in sys.argv[1:]:
sys.stdout.write("%s\n" % (hash(arg),))