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分でrootで実行
< /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
ファイルに保存します。