![모든 기존 사용자에게 무작위 비밀번호 할당](https://linux55.com/image/101619/%EB%AA%A8%EB%93%A0%20%EA%B8%B0%EC%A1%B4%20%EC%82%AC%EC%9A%A9%EC%9E%90%EC%97%90%EA%B2%8C%20%EB%AC%B4%EC%9E%91%EC%9C%84%20%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8%20%ED%95%A0%EB%8B%B9.png)
/etc/passwd 파일에서 사용자(첫 번째 열)를 파악하고 그들에게 암호를 할당하고 싶습니다. 기본 시스템 계정이 아닌 사용자 계정에 대해서만 이 작업을 수행하고 싶습니다. 지금까지 간단한 bash 스크립트가 있습니다.
#!/bin/bash
touch /usertempfile
grep "/home" /etc/passwd |grep -v "/bin/false"|grep -v "/sbin/nologin"|grep -v $USER |awk -F":" '{print $1}' >> /userstempfile
for i in $(cat /usertempfile); do
echo -e "password/npassword" |passwd $i
done
rm -rf /usertempfile
스크립트는 /etc/passwd 파일에서 기본이 아닌 시스템 계정의 사용자를 추출할 수 있지만 파일에 있는 사용자의 비밀번호를 변경할 수는 없습니다. 내가 뭘 잘못했나요?
답변1
내 스크립트에서 이것을 사용하면 chpasswd
나에게 잘 작동합니다.
echo "$USERNAME:$NEWPASSWORD" | chpasswd
추신: 루트가 아닌 사용자가 sudo
이전에 사용하기 에 적합합니다.chpasswd
echo "$USERNAME:$NEWPASSWORD" | sudo chpasswd