0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

追加したFTPユーザーにディレクトリ制限して任意のディレクトリにファイル転送させる

Posted at

どえらい苦労したので記念に(?)メモしておく。

##やりたいこと
FTPユーザーを新規で作って、特定のディレクトリのみにアクセスさせたい。
よくあるやつですね。
環境依存もありますがめちゃくちゃハマりました。

##やったこと
今回の環境では、目的のディレクトリに直接FTPユーザーにアクセスさせるのはできなかったので、
homeディレクトリ配下にFTPユーザー用のディレクトリを作り、
そこにアップしたものをinotify-toolsでサーバ内転送させるという飛び道具系。

###まず、ユーザー作成とchrootの設定
大体以下記事のような手順です。
(最後の鍵の指定はせず)
https://qiita.com/kooohei/items/5cf0bb6e5c1e372fc55b

実際の順番は違いますが、↑↑ここでめちゃくちゃハマりました。。。
直接/home/sftp_user配下にアップしようとしてPermission deniedがでてアップできなかったのですが、
/home/sftp_user配下にディレクトリを作ってそこにアップすればいいことに気づかず。。。

###転送設定
次に、inotify-toolsを使ったファイル転送設定です。
inotify-tools自体は監視ツールです。
指定したファイルやディレクトリの状況を監視し、変化があれば任意の処理を実行させることができます。
まずインストール。

$ yum install inotify-tools

次に、転送処理をするためのシェルを書きます。

watch.sh
#!/bin/sh
from=【監視(転送元)ディレクトリ】
to=【転送先ディレクトリ】
inotifywait --format "%f" -mq -e CREATE,MODIFY $from | while read file; do
  cp -fr $from$file $to$file
  echo "[moved] $from$file -> $to$file"
done

inotifywaitでファイルの監視をします。
上記ではCREATE,MODIFYで追加と更新を監視します。
echo なんちゃらのところはログ用なので書かなくてもいいです。
その他、指定可能なイベント名など、以下の記事が詳しく書かれています。
https://qiita.com/stc1988/items/464410382f8425681c20

ここまで来ると、あとはこのwatch.shを実行すればいいのですが、
実行するだけだと、ログアウトしたりターミナルを閉じてしまうと監視処理も止まってしまうので、

###転送処理を永続化させる
nohupで永続化させます。

$ nohup sh ./watch.sh &

永続化をやめたいときは、指定したプロセスはps xで確認できるので、kill 【プロセスID】して落としましょう。

##余談
実は今回の環境にはPleskが入っており、これまではPlesk経由でFTPユーザーを管理していた模様(多分proftpdかな)。
都合、Pleskを使わなくなったのでPleskごとプロセスを落としたが、これが仇になり・・・proftpdが生きているのかどうかを調べるところから始まり、chrootによるアクセス制御に移行し・・・とかなりめんどくさいことになった。。。

多分他にもっといい方法あるはず。。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?