Como alterar a senha usando o usermod?

10

Sou super administrador de um servidor e gosto de alterar a senha de um usuário existente. Como eu posso fazer isso ?

eu tentei

usermod -p 'new-password' john

mas não funcionou?

Mr Coder
fonte
a melhor resposta está aqui: askubuntu.com/a/80447/55435 , nota para a verificação dos comentários bem
ryenus

Respostas:

17

O usermod -psinalizador espera que os dados já sejam a senha em um formato criptografado.

Use openssl passwdpara gerar os dados criptografados ou faça o seguinte:

usermod -p `openssl passwd` (USERNAME)
Rorik
fonte
openssl passwdespera uma senha de 0 a 10 caracteres.
Onnonymous
6

O motivo pelo qual não funcionou é porque usermoda opção -p espera que a senha já esteja criptografada.

Na usermodpágina do manual:

 -p, --password PASSWORD
       The encrypted password, as returned by crypt(3).

Definir uma senha dessa maneira não é recomendado.

Em vez disso, você deve usar passwd <username>. Isso deve (as usermod) ser feito como root (se você não estiver alterando a senha dos usuários atualmente conectados).

Para alterar a senha do usuário foo.

sudo passwd foo

Isso solicitará uma nova senha.

Consulte a página de manual para passwdobter mais informações sobre configuração, por exemplo, tempo de expiração.

Boa sorte!

Zoke
fonte
6

Você pode usar passwd:

sudo passwd USERNAME 

Você não precisa sudose você é superusuário

RiaD
fonte
sudoexigir senha de root :)
Achu
@Achu: é necessária uma senha de usuário atual. Mas ele é superusuário.
Riad
O que superuserrepresenta?
Achu
3

A maneira de atribuir uma senha ao usermod (que é o que o OP realmente pediu) é usar uma crypt()senha com hash para o -pargumento.

SALT="Q9"
PLAINTEXT="secret_password"
HASH=$(perl -e "print crypt(${PLAINTEXT},${SALT})")
echo "Password Hash = \"${HASH}\""

Em seguida, use isso no seu usermod -pargumento de linha de comando:

usermod -p ${HASH} john
Waldo Trout
fonte
2

Um comando de linha única não interativo para alterar a senha de um usuário:

sudo usermod -p `perl -e "print crypt("new-password","Q4")"` john

usermod -prequer senha criptografada para funcionar. Observe new-passwordque ficará visível para usuários que podem listar os processos.

Benoy G
fonte
2

Algo que deve ser adicionado aqui é o seguinte. Este método:

sudo usermod -p perl -e "print crypt("new-password","Q4")"john

significa que várias senhas muito semelhantes funcionarão. Por exemplo, no servidor Oracle Linux 7.4 e na área de trabalho Ubuntu 17.10, considere:

sudo usermod -p perl -e "print crypt("borkling","Q4")"orabuntu

Agora, se alguém fizer:

su - orabuntu

você descobrirá que QUALQUER senha que começa com "borkling" funcionará, por exemplo

borkling88 borklingjars

embora "borkline" não funcione, porque, como afirmado anteriormente, qualquer senha que tenha "borkling" como prefixo também funcionará quando a senha for definida dessa maneira.

Uma maneira de fazer com que o afaik não tenha esse efeito colateral indesejado é o seguinte:

(o crédito para isso vai para "Sandeep" aqui:
/programming/2150882/how-to-automatically-add-user-account-and-password-with-a-bash-script )

No Linux RedHaty: (omita a roda "-G" se você não deseja que o sudo privs seja concedido)

sudo useradd -m -p $ (openssl passwd -1 $ {PASSWORD}) -s / bin / bash -G wheel $ {USERNAME}

Nos Debiany Linuxes (omita o -G sudo se você não quiser o sudo privs):

sudo useradd -m -p $ (openssl passwd -1 $ {PASSWORD}) -s / bin / bash -G sudo $ {USERNAME}

Gstanden
fonte
1

Apenas digite

passwd

Dessa maneira, o usuário normal pode alterar sua própria senha sem privilégios de root, se você não tiver.

Achu
fonte