Just beat IT

情報系学生が技術的なことから昨日の夕飯のことまで

【CentOS7】sambaの共有フォルダを勝手に消されないようにする!【.recycle】

はじめに

どうも!最近,YoutubeのマリオワールドRTA動画を視聴しているロピタルです(^^)

今回は,研究室サーバの共有フォルダ内データを勝手に消されないよう設定したので,その方法について書いていきます!!!

目次

経緯

研究室のCentOS7で運用しているサーバは,Sambaを動かしてNASとして運用しています.

しかしこれまで,誰でもデータを削除できる状態で運営していたため,誰かが誤って全削除しようものなら,絶望してしまう状態でした( 一一)

f:id:lhopital:20200731032118j:plain

そこで,勝手に削除されないように設定することにしました!

どんな設定をするの?

  1. まず,共有ファイルでデータを削除した際に,そのデータを残しておく”ゴミ箱”を作成します.
  2. そしてそのゴミ箱のファイルを,削除できないよう設定します.
  3. また,それだけだとゴミ箱にファイルがどんどん溜まっていってしまうため,定期的にゴミ箱内のデータを消していくスクリプトを作成します.

さて,設定していきましょう(^^)/

f:id:lhopital:20200731035055j:plain

設定手順

行った設定を書いていきます!

ゴミ箱設置

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の共有フォルダへのごみ箱設置について書きました!

共有ストレージは何があるか分からないので,正しく設定していく必要がありますね"(-""-)"

ではこのへんで~