1시간마다 Linux 사용자의 비밀번호를 변경하고 싶습니다. cron을 통해 호출되는 bash 스크립트를 사용하거나 Linux cronjob을 통해 직접 명령을 사용하는 방법에 대한 아이디어가 있는 사람이 있습니까?
답변1
@SINA GH의 답변을 확장하지만 직접적인 답변을 위해 단순화합니다.
mkpasswd를 사용할 수 있는 경우:
echo '0 * * * * root mkpasswd -l 50 cloud-user' >> /etc/crontab
mkpasswd를 사용할 수 없는 경우:
echo '0 * * * * root < /dev/urandom tr -dc A-Z-a-z-0-9 | head -c50 | passwd --stdin cloud-user' >> /etc/crontab
그러면 개별 사용자의 비밀번호가 매시간 무작위로 생성된 문자열로 자동 변경되도록 crontab에 줄이 추가됩니다.
그것을 파괴:
echo '...' >> /etc/crontab
일정에 따라 실행되도록 새 행/항목 추가
0 * * * * root
평일 매시간 0분에 루트로 실행
< /dev/urandom tr -dc A-Z-a-z-0-9
무작위 데이터 생성 및 문자 필터링
| head -c50
stdin에서 처음 50자(임의의 문자)를 가져옵니다.
| passwd --stdin cloud-user
클라우드 사용자의 비밀번호를 stdin에서 전달된 비밀번호로 설정합니다(처음 50자 임의 문자).
답변2
임의의 문자열로 매일 사용자 비밀번호를 변경하십시오.
용법:autopass.sh username
설치하다:
다음 코드 autopass.sh
를 /root/
.
#!/bin/bash
set -e
MyUser=$1
RandPass=$(< /dev/urandom tr -dc A-Z-a-z-0-9 | head -c12)
set +e
echo -e "$RandPass\n$RandPass\n" | passwd $MyUser &> /dev/null && echo "$(date) --> Passwd: $RandPass" >> /root/${MyUser}-pass.txt || echo "$(date) --> Error: failed to change pass" >> /root/${MyUser}-pass.txt
exit 0
권한 실행: chmod u+x autopass.sh
crontab 편집: crontab -e
파일에 추가: 0 3 * * * /root/autopass.sh username
매일 스크립트가 임의의 문자열로 비밀번호를 변경하여 /root/username-pass.txt
파일 에 저장합니다.