【CentOS7】sambaの共有フォルダを勝手に消されないようにする!【.recycle】
はじめに
どうも!最近,YoutubeのマリオワールドRTA動画を視聴しているロピタルです(^^)
今回は,研究室サーバの共有フォルダ内データを勝手に消されないよう設定したので,その方法について書いていきます!!!
目次
経緯
研究室のCentOS7で運用しているサーバは,Sambaを動かしてNASとして運用しています.
しかしこれまで,誰でもデータを削除できる状態で運営していたため,誰かが誤って全削除しようものなら,絶望してしまう状態でした( 一一)
そこで,勝手に削除されないように設定することにしました!
どんな設定をするの?
- まず,共有ファイルでデータを削除した際に,そのデータを残しておく”ゴミ箱”を作成します.
- そしてそのゴミ箱のファイルを,削除できないよう設定します.
- また,それだけだとゴミ箱にファイルがどんどん溜まっていってしまうため,定期的にゴミ箱内のデータを消していくスクリプトを作成します.
さて,設定していきましょう(^^)/
設定手順
行った設定を書いていきます!
ゴミ箱設置
Sambaの recycle
というモジュールを利用してゴミ箱を設置します!!
Sambaの設定ファイルである /etc/samba/smb.conf
の共有フォルダのセクションに以下の記述を追加します.
vfs objects = recycle recycle:repository = .recycle recycle:keeptree = no recycle:versions = yes recycle:touch = yes recycle:touch_mtime = yes recycle:maxsize = 1000000000 recycle:exclude = *.tmp *~$
その後,sambaをリロードします.
systemctl reload smb
これで,共有フォルダである /home/share
の下に .recycle
という名前でゴミ箱フォルダが設置できました('ω')
削除不可設定
chattr
コマンドにより,ゴミ箱フォルダに削除禁止属性を追加します.
$chattr +i /home/share/.recycle
これにより,共有フォルダのファイルが削除不可となりました.Windowsのエクスプローラで削除してみると,その場では削除できたように表示されましたが,リロードするとファイルは残っておりました!
ゴミ箱内ファイルの自動削除
cron
を利用して,ファイルを削除するスクリプトを定期的に実行させます.
スクリプトの内容は,以下のようになっています.
#!/bin/bash chattr –i /home/share/.recycle find /home/share/.recycle -mtime +180 | xargs -i rm "{}" chattr +i /home/share/.recycle
前章でroot権限であっても削除できない設定にしたため,一度その設定を消してから削除を実行しています.上記の設定では,削除されてから180日以上経過しているファイルを削除します.
上記のスクリプトを一日一回動作させるので, /etc/cron.daily/
にスクリプトファイルを設置しました.
これにて設定完了!!!
まとめ
今回は,sambaの共有フォルダへのごみ箱設置について書きました!
共有ストレージは何があるか分からないので,正しく設定していく必要がありますね"(-""-)"
ではこのへんで~