質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

Q&A

解決済

2回答

3335閲覧

柔軟にカスタマイズできるftpdは?

退会済みユーザー

退会済みユーザー

総合スコア0

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

0グッド

2クリップ

投稿2018/01/29 06:40

編集2018/01/30 01:32

CentOS - CentOS7&Vsftpdでweb更新専用ユーザーを作りたい【再】(110753)|teratailの続きになります。

telnet接続できるできないと、ftp接続できるできないを
ユーザー個別に細かくコントロールしようとしていて、
特にftpについては

・SSH必須 or 不要
・/var/www/htmlなど特定パス以下のみ or /home/hoge以下のみ or /以降全体OK

をユーザー個別に柔軟に設定したいと考えております。
(webのメンテはシェルなし、dbのメンテはシェルあり、外部の人と大容量ファイルの受け渡しのSFTP利用を想定。せいぜい3~5人の規模。)

vsftpdではそこまで出来ない(?)と先の質問の回答でしたので、
そこはそこで質問を区切り、
どのftpdを選択すればこのようなことが実現できるのか、
おわかりでしたらアドバイスお願いします。

ftpサーバー(ftpd)比較 - Qiita
を読んで、proftpd、pure-ftpd、vsftpdが3大ftpdなのかなとは思いました。
Pure-FTPd の存在を知ってしまったので試さざるを得ない - Qiita
を読んで、Pure-FTPdでできるかもしれないけど確信は持てないと思いました。
構築事例の探し方が今ひとつ的を射ていないのだろうと思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

showkit

2018/01/29 06:57

vsftpd の chroot 設定ではだめなのですか?「vsftpdではそこまで出来ないとわかりました」と判断したところが飛躍しているように思われますので、どこが設定できなくてだめと判断したかを書いていただかないと答えるのが難しいかと思います。
退会済みユーザー

退会済みユーザー

2018/01/30 01:09

110753質問に示したように、なぜかvsftpdでのchroot絡みの設定が働かず、改善できずにおります。110753の質問に示した情報で不足でしたらご指摘ください。
guest

回答2

0

別解として、Vstfpd ともう一つ別の ftp サーバを起動して、どちらかのポート番号を変更するというのはいかがでしょうか?

一般ユーザ向けは chroot して通常の FTP 用ポートで待ち受け。

特定ユーザはおそらく管理者的なものでしょうから、別の大きなポート番号を割り当てて、ssh 接続させる。

スマートな解ではないかもしれませんが、運用上はこれでいけそうな気がしますが・・・。

投稿2018/01/30 01:47

showkit

総合スコア1638

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/01/30 02:01

別のサーバーのコントロールパネル上で、web上からサクッと設定できたりするのがあったりするくらいだから、設定を施せば簡単にできるものではないかとの思い込みもありました。 できているサービスが有るのだから、自前構築でもできるはずと思っているのですが、ダメそうなら2つftpdを立てることも考慮する必要があるかもしれませんね。
guest

0

ベストアンサー

前回の質問の回答

Windows上WinSCPからSFTP/SCPにて全ディレクトリが見えてしまう。

SSHで接続するなら、vsftpdの設定は関係ありません。

を勘違いされていないでしょうか?
上記回答はFTPはvftpdの設定依存の話で、SSHは vftpd とは関係なくsshd設定依存ですという意味です。

やりたいこと整理

・Windows上WinSCPからSFTP/SCPにて全ディレクトリを見られたくない
・特定目的のために特定ユーザーだけはSSH接続対象外にしたい
・web更新専用ユーザーを作りたい
・非SSHユーザーをFTPできるようにしたい

普通、vsftpdやsshでは、ユーザー認証はLinuxユーザーでログインできるか否かということが基本になります。それぞれ、ユーザー認証はいろいろな方法で制御できます。

特定のユーザーをSSH認証拒否

一番簡単なのは、/etc/ssh/sshd_configに下記のようにSSH接続許可ユーザーをハードコーディングすることです。下記追加または編集して、SSHサーバーを再起動します。必ずユーザー名が正しいか確認しないとSSH接続できなくなるので注意してください。

AllowUsers ユーザー1 ユーザー2 ...

全ディレクトリを見られたくない

アクセス権限を分けたほうがよろしいかと思います。rootのみサーバーなどの設定ファイル編集が可能で、一般ユーザーはコンテンツやホームディレクトリのみ自由にアクセス可能であるのが普通です。ファイル構成を一般ユーザーに見られること自体は特に気にする必要はありません。

sudoなどを併用すればユーザーごとにも、グループごとにも細かくアクセス権限設定が可能で、許可したいコマンドや拒否したいコマンドなどを設定することも可能です。

非LinuxユーザーをFTP接続許可

これはLinuxユーザーをvsftpdログイン認証に使っているので発生する問題です。ですのでバーチャルユーザー認証方式に変更すれば可能です。

下記のようなvsftpdのログイン ユーザー名・パスワード ファイルを/etc/vsftpd/users.txtに作成します。

conf

1ユーザー1 2パスワード1 3ユーザー2 4パスワード2 5//... 6//...

そして下記コマンドでハッシュDB化します。

bash

1db_load -T -t hash -f /etc/vsftpd/users.txt /etc/vsftpd/users.db

/etc/pam.d/vsftpdをすべて コメントアウト してから下記のようにします。

conf

1auth required /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/users 2account required /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/users

vsftpd.confを下記のように追加(or 編集)します。

バーチャルユーザー方式ででも下記設定のように、どれかひとつのLinuxユーザーにマッチしている必要がありますので、新規Linuxユーザーを登録してここに設定するか、既存Linuxユーザーをここに設定します。

conf

1guest_enable=YES 2chroot_local_user=YES 3guest_username=ftp_user #←適当にユーザーを登録または、既存Linuxユーザーを設定 4user_config_dir=/etc/vsftpd/userconf 5 6anon_upload_enable=YES 7anon_mkdir_write_enable=YES 8anon_other_write_enable=YES 9anon_world_readable_only=NO 10anon_umask=022 11virtual_use_local_privs=YES

あとはvsftpdを再起動すれば完了です。

投稿2018/01/29 10:30

Tomak

総合スコア1652

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/01/30 01:12

先の質問での回答では、公開ディレクトリを狭める設定は非SSHユーザー向けにしか働かないかのような印象を受けましたが、違うのでしょうか。 仮想ユーザー化するという考えは発想しませんでした、便利そうだなと思います。
Tomak

2018/01/30 02:23

FTPとSFTP(SSH)を混同されているのか、ミスタイプされているのでその指摘です。質問では、別々のデーモンサービスの別々の繋ぎ方をおっしゃられているので、別々に設定しないといけませんという内容です。SSHはSSHの設定で、FTPはFTPの設定(vsftpd)ということです。 SFTPは紛らわしいですがSSHを使用して接続します。FTPの暗号化接続はFTPSと呼ばれます。 ・sftp, scp, ssh = ssh接続(設定は/etc/ssh/sshd_config) ・ftp, ftps = ftp接続(設定はvsftpd.conf) > 公開ディレクトリを狭める設定は非SSHユーザー向けにしか働かないかのような印象を受けましたが、違うのでしょうか。 まず、SSHは(物理や仮想)サーバーと接続することを目的としたプロトコルなので、SSHログインもLinuxユーザーが存在している必要がありますが両者は別々の意味なので注意してください。いちおうSSHログインでも公開ディレクトリを狭めることは可能ですが、たぶん頑張らないと今回のやりたいことは実現できません。 ---- SSHユーザー = Linuxユーザー Linuxユーザー ≠ SSHユーザー > 仮想ユーザー化するという考えは発想しませんでした、便利そうだなと思います。 一般的な方法なので覚えておいて損はないはずです。意味合い的にもしっくりきます。 FTP接続するためだけにLinuxユーザーを作成するのはおかしいです。広義的にFTPユーザーはFTP接続にしか使われないので。 例えばIMAPサーバーなどでもLinuxユーザーをユーザー認証に使えますが、この設定ではメールを受信するためだけにLinuxユーザーを作る必要が出てきます。数人であれば問題ありませんが、大量人数であれば現実的ではありません。 個人的にはメール受信するためだけに、Linuxユーザーを作りたくありません。
退会済みユーザー

退会済みユーザー

2018/01/31 02:52

SFTP利用に絞ってsshd_configを練り上げて、一部SFTPユーザーを/var/www以下のみに制限することに成功しました。(FTPSまでは、まぁいいかと妥協してしまいました。) chrootっていうキーワードで検索すると設定事例が見つかるようになって絞れてきて、sshd_configなんだなと真似して実現できました。 仮想ユーザー化はしておりませんが、もしかしたらこの先そういう場面も出てくるかもしれないので、丁寧な説明をつけていただいたこともあるので、 こちらの回答をBAとさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問