9
6

More than 5 years have passed since last update.

SFTPでのみアクセスできるユーザーの作成

Last updated at Posted at 2018-09-04

やりたいこと

・外部のエンジニアさんと連携したい
・でもドキュメントルートは見せたくない
・でもソースの再配置とかめんどくさい

実現方法

・sshd_configでsftp専用のユーザーを作成
(bashにはログインさせない)
・sshd_configでchrootでSFTPログイン時のルートディレクトリの変更
(その配下しか見せない)
・chrootのディレクトリ配下に作成したディレクトリをドキュメントルート配下にシンボリックリンクを張る
(chrootの制限としてディレクトリの所有者がroot且つ権限は755で固定=直下にファイルを配置できない)

やる

兎にも角にもユーザーを作成する

groupadd sftp
useradd -g sftp sftp-user1

chroot先のディレクトリを作成する
この時ディレクトリの所有者と権限に注意。
間違った設定をするとログインできないことになる

mkdir /var/www/sftp
chown root /var/www/sftp
chmod 755 /var/www/sftp

次にsshd_configを編集をする
デフォルトならパスはここ→/etc/ssh/sshd_config
最終行にこんな感じで追記する。

Match group  sftp
  ChrootDirectory /var/www/sftp
  ForceCommand internal-sftp

意味合いとしては、sftpグループのユーザーがアクセスしてきたら
ルートディレクトリを/var/www/sftpとすること
sftpアクセスのみでsshでのシェルへのログインは許可しない

sshd -t #コンフィグファイルのチェック 
service sshd reload

※必ず、sshd -tを実行すること。
 sshdが死んだら大変。。。

ここまででSFTP専用ユーザーに対象ディレクトリ配下しか見せない設定は完了
しかし、このままではsftp-userは新たにファイルの配置ができない。
アパッチのドキュメントルートにファイルが無いので、httpで配置したソースも見れない。

なので、/var/www/sftpに新たにディレクトリを切ってそこにシンボリックリンクを張る

#/var/www/sftpで実行
mkdir web_source 
chmod 777 web_souce 
#ドキュメントルートで実行
ln -s /var/www/sftp/web_souce ./web_souce

これでドキュメントルートの配下に"/var/www/sftp/web_souce"へのシンボリックリンク
"web_souce"が作成される。

最後にhttpd.confのFollowSymlink?みたいなやつが設定されていれば
アパッチからweb_sourceが見れるはず。

以上。

9
6
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
9
6