Linux에서 사용자에게 초기 / 기본 비밀번호를 할당하려면 어떻게해야합니까?


10

사용자 비밀번호 설정 방법을 설명하는 안내서를 찾았습니다 . 자동화하고 다음과 같이 사용자에게 전자 메일을 보내려고합니다.

userid created with password XYZ.
request to change the initial password.

위의 문서에 따르면 Python을 사용하여 암호화 된 비밀번호를 작성하고 다음과 usermod같이 명령에 피드해야합니다 .

 usermod -p "<encrypted-password>" <username>

이 작업을 수행하는 다른 간단한 방법이 있습니까? 특별한 유틸리티를 다운로드하고 싶지 않습니다. 가능한 한 일반화되어야합니다.


편집 : 위의 링크에 제공된 방법조차도 나를 위해 작동하지 않는 것 같습니다 :

bash-3.00# python
Python 2.4.6 (#1, Dec 13 2009, 23:43:51) [C] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>> import crypt; print crypt.crypt("<password>","<salt>")
<sOMrcxm7pCPI
>>> ^D
bash-3.00# useradd -g other -p "sOMrcxm7pCPI" -G bin,sys -m -s /usr/bin/bash mukesh2
UX: useradd: ERROR: project sOMrcxm7pCPI does not exist.  Choose another.
UX: useradd: sOMrcxm7pCPI name should be all lower case or numeric.

여기에 하나 개 더 링크 내가 발견하지만 보안 문제에 -p 옵션을 사용하여도 보인다 usermod누군가가 사용하는 경우 ps암호가 표시되는 프로세스 목록을 참조하십시오
munish

답변:


13

다음 chpasswd과 같이 사용할 수 있습니다 .

echo "username:newpassword" | chpasswd

편리한 경우 chpasswd이외의 프로그램에서 파이프 할 수 echo있지만이 방법을 사용하면됩니다.

편집 : 쉘 스크립트 내에서 암호를 생성 한 다음 설정하려면 다음과 같이하십시오.

# 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

에 대한 자세한 내용 chpasswdhttp://linux.die.net/man/8/chpasswd를 참조 하십시오.

(암호 생성 명령은 http://nixcraft.com/shell-scripting/13454-command-generate-random-password-string.html 에서 가져 왔습니다 )


@Dominick 흠 덕분에 chpasswd는 아마도 AIX에있을 것입니다 ... 나는 그것을 사용하지 않았습니다. 그리고 evrytime 암호를 작성해야합니다 ... 질문 링크와 같은 스크립트로 생성 할 수 없습니다 ... 불행히도 그것은 저에게 효과가 없었습니다
23 분 02 초

@munish 나는 당신이 스크립트에서 생성하는 것이 무엇을 의미하는지 잘 모르겠지만 희망적으로 더 도움이되도록 답변을 업데이트했습니다.
Dominick Pastore

작동하지 않습니다. "인증 토큰 조작 오류"
Cerin

@Cerin 우연히 같은 일을하고 sudo echo "username:newpass" | chpasswd있습니까? 의 상승 된 권한 sudo은 파이프를 통과하지 않으므로 chpasswd일반 사용자로 실행됩니다. 에서 sudo와 같이를 이동하여 고정시킬 수 있습니다 echo "username:newpass" | sudo chpasswd. 해당 오류 메시지를 유발할 수있는 다른 문제도 있지만 이와 같은 권한 오류가 가장 일반적 일 수 있습니다.
Dominick Pastore

1
w, ps 또는 다른 프로세스에 대한 정보를 표시하는 기타 명령을 사용하여 동일한 시스템에서 로그인 한 다른 사용자가 명령 행의 비밀번호를 볼 수 있습니다. 이 방법으로 설정 한 비밀번호는 가능한 빨리 사용자가 변경해야합니다.
Mnebuerquo

3

OpenSSL을 사용하여 임의 비밀번호 (이 경우 16 자)를 생성 할 수 있습니다.

# 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')

그런 다음 해시 된 비밀번호를 useradd또는usermod

# omit the "-1" if you want traditional crypt()
usermod -p $(openssl passwd -1 "$p") <username>

크레디트가있는 곳 : 암호 생성은 대신 사용 하는 비슷한 방법으로 적용됩니다 ./dev/urandomopenssl


2

useradd 가 작동해야합니다 (우분투에서 수행했습니다). 어쩌면 각 인수가 올바른지 확인하십시오 (그룹이 존재하고 경로가 강타 당할 권리입니다). 비밀번호와 사용자 로만 명령을 실행 한 다음 userdel 을 사용 하여 더 많은 매개 변수를 제거한 후 재 시도하여 문제의 원인을 파악할 수 있습니다 (강제력 접근).

또한이 초보자들이 (매뉴얼 페이지를 참조하십시오), 당신은 그것을 일반 텍스트 암호하고 해당 사용자를 만듭니다 포함한 정보와 같은 passwd 파일과 파일을주고 우분투, 아래 적어도. 한 번에 많은 사용자를 처리 할 수있는 좋은 방법입니다.


newusersUbuntu의 명령에 대해 +1
Levon

1

내가 찾은 가장 간단한 방법 :


PASSWD="mySeCr3t-default-pa55" 
echo ${PASSWD} | passwd --stdin username_here

이것을 테스트 했습니까? passwd: unrecognized option '--stdin'
Cerin

예, 나는 이것을 여러 번 사용했지만 거의 다른 명령과 마찬가지로 현재 문제에 대한 실질적인 해결책은 아닙니다. passwd 바이너리의 일부 변형은 --stdin 스위치를 지원하지 않습니다.
MelBurslan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.