タイガーラック クリエイティブブログ
2024
October
17

【Linux】特定のディレクトリ配下のみアクセスできるFTPユーザーを作成する

経緯

外注先や他部署がFTPを介してファイルの送受信をするケースがある。
FTPユーザーがサーバー内の全てのディレクトリにアクセスできてしまうと、困るので、特定のディレクトリ配下のみアクセスできるFTPユーザーを作成した。

環境

CentOS Linux 7

ftp用ユーザーの作成

ftp_user というユーザーを新規作成していく。

サーバーにSSHログインしてroorユーザーに切り替わり、下記コマンドで現在のユーザー確認。

cat /etc/passwd

ftp_user がいないことを確認できたので、下記コマンドで新規作成。

# 新規ユーザー追加
useradd ftp_user
# 追加したユーザーのパスワード設定
passwd ftp_user
# 追加したユーザーに切り替わる
su - ftp_user

ftp_user の作成ができた。

vsftpdのinstall

roorユーザーに切り替わり、yumでvsftpdをインストールする。

yum -y install vsftpd

vsftpd設定ファイルの編集をする。

vim /etc/vsftpd/vsftpd.conf

# 以下、設定した箇所の一部抜粋
# 匿名ユーザのログインは許可しない
anonymous_enable=NO
# ローカルユーザによるログインを許可
local_enable=YES
# ユーザのchroot(ユーザーごとのルートディレクトリ)を有効にする
chroot_local_user=YES
# chroot_listにリストアップしたユーザーはchrootの対象から除外される
chroot_list_enable=YES
# chroot_listの設定
chroot_list_file=/etc/vsftpd/chroot_list
# ファイルのタイムスタンプはユーザのローカルタイムを使用する
use_localtime=YES
# ユーザ毎の設定ファイルを置くディレクトリ
user_config_dir=/etc/vsftpd/user_conf
# 書き込み権限があるとchroot出来ない機能を無効にする
allow_writeable_chroot=YES

vsftpd設定ファイルで指定したディレクトリやファイルを作成する。

touch /etc/vsftpd/chroot_list
mkdir /etc/vsftpd/user_conf

FTPサービスを許可するユーザーを追加

vim /etc/vsftpd/user_list
```
# 下記を追加
ftp_user
```

firewallの設定

firewallの設定の確認をする。

firewall-cmd --list-all

ftpを許可する。

firewall-cmd --zone=public --add-service=ftp --permanent

確認してftpが追加されていればfirewallを再起動して反映する。

firewall-cmd --reload

ftp_user用のディレクトリ作成とシンボリックリンク

ディレクトリを作成して権限の変更をする。

cd /var/www/test/public
mkdir ftp_user_dir
chown -R ftp_user:apache ftp_user_dir

ftp_user のHOMEへいき、シンボリックリンクを設定する。

cd /home/ftp_user
ln -s  /var/www/test/public/ftp_user_dir/ web

vsftpdのftp_user の設定変更する。

vim /etc/vsftpd/user_conf/ftp_user
```
local_root=/home/ftp_user/web
```

vsftpd起動

systemctl start vsftpd
# 自動起動有効化
systemctl enable vsftpd.service
# 確認
systemctl -t service list-unit-files | grep -i ftp

ftp接続確認

# yumでインストール
yum -y install ftp
# 接続
ftp
open localhost
# ここから以下、聞かれたことを答える
# ftp_userでの接続に成功

無事、特定のディレクトリ配下のみアクセスできるftp_user を作成して接続することができた。

このカテゴリの最新記事

関連記事

SHOP LIST

タイガーラック株式会社

〒577-0056
大阪府東大阪市長堂1-3-14 TOKUYASU Bld.