ディレクトリサイズを確認し、しきい値を超えると、権限を読み取り専用に変更し、所有権をrootに変更するスクリプトを作成する必要があります。
/sasdata2にホームディレクトリを持つ複数のユーザーがいます。
/sasdata2でユーザーのすべてのフォルダを確認し、所有権をrootに変更し、100 GBを超えるすべてのフォルダのみを読み取ることができるように権限を変更したいです。
このスクリプトは定期的に実行されます(たとえば、1日に1回)。
また、変更が発生すると、ユーザーと管理者に電子メールが送信されます。一部のユーザーの場合、制限は200 GBのように高いか、1ユーザーの場合は1 TBであると考えているため、ユーザーごとのポリシーによって100 GBまたはすべてに依存します。
よろしくお願いします。
みんなの回答ありがとうございます。しかし、次のように解決策をまとめました。
100gb.txt、200gb.txt、および1tb.txtという3つのファイルを入手し、そのファイルに各ユーザーを追加しました。次に、次のスクリプトを実行します。
#!/bin/bash
for i in `more /sasdata2/SAS-USERS/100gb.txt`
do
uses=$(du -s /sasdata2/SAS-USERS/$i | awk '{print $1}')
uses_mb=`expr $uses / 1024`
if [ $uses -ge 104857600 ]; then
chown root:root /sasdata2/SAS-USERS/$i
echo "Your disk space usage is now $uses_mb MB. You are denied to write data at your home directory" | mail -s "Disk Space Uses" "$i"@mail.com,[email protected]
elif [ $uses -lt 104857600 ]; then
chown $i:$i /sasdata2/SAS-USERS/$i
fi
done
200GB行と1TB行を繰り返して、対応するテキストファイルを呼び出します。
答え1
quota
ユーザーおよび/またはグループのディスク容量の制限を指定できるツールがあります。
仕事用に使えばいいと思います。
https://www.howtoforge.com/tutorial/linux-quota-ubuntu-debian/
次のスクリプトを書く代わりに
MB_USEd=$(du -shm /home/foo)
if [ $MB_USEd -ge 102400 ]; then
chown root:root /home/foo
fi
これはおそらくいいえ期待どおりに動作します。