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

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

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

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

FTP

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

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Q&A

解決済

1回答

5112閲覧

CentOS7&Vsftpdで非SSHユーザーをFTPできるようにしたい

退会済みユーザー

退会済みユーザー

総合スコア0

CentOS

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

FTP

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

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

0グッド

0クリップ

投稿2017/10/19 06:55

前回の質問の続きになります:「CentOS - CentOS7&Vsftpdでweb更新専用ユーザーを作りたい(74769)|teratail

【目的】
CentOS7サーバーへの接続には基本的にSSH必須にしていますが、
特定目的のために特定ユーザーだけは対象外にしたいです。
なお、社内業務用のサーバーとしての構築中で、
一般公開するつもりのないサーバーですが、
コンテンツはhttpでみせるようになっています(要ログイン)。
(条件が整えばhttps化も検討します。)

【経緯】
Server-Worldさんのドキュメント:
CentOS 7 : Vsftpd over TLS/SSL : Server World
と前回いただいた回答を参考に、
webコンテンツ更新専用ユーザーグループを作り、
それに属するユーザーがSFTP接続できるように設定できました。

それとは別に、データベースから切り出すデータ(CSVファイル)を送受信するために、
SSHを使わないFTPユーザーも確保したいです。
業務システムからFTP利用するのに、
まだSFTP接続できるめどが立たないため、
やむを得ず現行のFTP接続の仕組みをそのまま使いたいのです。
(サーバーからデータをダウンロードするのに、webの処理phpを動かしてcsvファイルを作らせ、ftpでダウンロードする、
逆は、ftpでアップロードしてから、phpの処理を動かしてデータベースに反映。)

【現状】
前回と同様にユーザーを作ってwebグループに属させています。
FTPで接続させようとすると、拒否されたというメッセージが表示されます。
試しにWinSCPで接続しようとするとFTPではこうなりました。
WinSCPでの接続テスト結果

Vsftpdにはユーザー個別で設定を変える方法もあると、
[CentOS][vsftpd]ログインユーザ毎に個別の設定ファイルを適用する | ごった煮 - tips about programming and building a server
に書いてありますが、SSH適用外にするところまでは触れられておらず、
かといってサーバー全体をSSH適用を外すのこ怖いので、
うまい方法がありましたら教えて下さい。

【サーバー環境】
[root@localhost vsftpd]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
[root@localhost vsftpd]# vsftpd -v
vsftpd: version 3.0.2
[root@localhost vsftpd]# ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013

(不足情報などありましたらご指摘ください、追加します。)

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

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

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

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

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

guest

回答1

0

ベストアンサー

isseium's blogのブログ記事:
ssh の認証方法をユーザごとに設定する - isseium's blog
の通りにやったら、とりあえず接続拒否は免れました。

/etc/ssh/sshd_configファイルを点検して、
ファイル末尾に「Match User foobarbaz」などと追加して、
「PasswordAuthentication yes」を加えました。

さらに、
ごった煮 - tips about programming and building a serverさんのブログ記事:
[CentOS][vsftpd]ログインユーザ毎に個別の設定ファイルを適用する
の通りにやったら、うまく特定ディレクトリだけアクセスできるようになりました。

ユーザー定義用ファイルを置くディレクトリを作り:
「# mkdir /etc/vsftpd/userconf」
vsftpdの定義ファイル「/etc/vsftpd/vsftpd.conf」に下記の行を追加し
「user_config_dir=/etc/vsftpd/userconf」
そのディレクトリにfoobarbazというユーザー名そのもののファイル名で
「local_root=/var/www/html/path/to/target/directory」
みたいにしました。

「# systemctl restart sshd」
「# systemctl restart vsftpd」
でこの設定が反映され、パスワード認証のみで決めたところだけアクセスできました。

余談ですが、ファイルのアップロードやリモートディレクトリ上のファイル削除については、
該当ディレクトリやファイルのオーナーユーザーやグループを適切に変更したら解決しました。

接続先ディレクトリにユーザーの書き込み可能属性が付与されていると
「500 OOPS: vsftpd: refusing to run with writable root inside chroot()」
というエラーが発生するようで、
対策として、vsftpdのユーザー個別定義ファイルに、
「allow_writeable_chroot=YES」も付け加えました。
参考:vsftpdの設定で謎のエラーにハマった - TomoProgの技術書

投稿2017/10/19 07:08

編集2017/10/19 12:20
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問