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 を作成して接続することができた。
このカテゴリの最新記事
2024.04.18
【Laravel】Laravelで作成されたディレクトリのpermissionについて
2023.07.19
【RPA】PowerAutomateDesktop(PAD)を使ったブラウザ操作自動化
2024.03.22
【HTML5】カスタムデータ属性を使い要素に値を持たせる方法
2023.04.19
専門用語を使わずにゼロからわかるSQLインジェクション