LoginSignup
4
4

More than 3 years have passed since last update.

LinuxでSFTP専用ユーザーを作成してみた。

Last updated at Posted at 2020-06-18

仕様

  • ドキュメントルート配下のみ操作することができます。

    • ドキュメントルートは/var/www/htmlとします。
  • パスワード認証でログインします。

  • SSHは利用できません。

ユーザーを作成

useradd sftp-user
passwd sftp-user
usermod -d / sftp-user
usermod -g apache sftp-user
chown sftp-user:apache /home/sftp-user

ポイント:所有グループをapacheに設定しパーミッション775にすることで、apacheの権限エラーを防ぎます。

SFTP設定

vim /etc/ssh/sshd_config

修正内容

#PasswordAuthentication no //コメントアウト
#Subsystem sftp  /usr/libexec/openssh/sftp-server //コメントアウト
Subsystem sftp internal-sftp 
Match User sftp-user
ChrootDirectory /var/www/sftp
ForceCommand internal-sftp -u 0002 
PasswordAuthentication yes  
パラメータ 説明
Match userかgroupを指定して条件範囲を指定
ChrootDirectory chrootを行うディレクトリパス
ForceCommand 強制コマンド設定
PasswordAuthentication パスワード認証を行うか

補足:ForceCommand internal-sftp -u 0002 することでsftp-userがファイルをアップロードしたとき、
グループに権限が与えられます。未設定だと755だが、設定後775になります。
(グループに権限を与えることでapacheによる書き込みを許容します。)

修正後は再起動します。

systemctl restart sshd

ディレクトリ作成

ディレクトリ構成

まず抑えておきたいのがchrootに指定するディレクトリの権限は

root:rootのパーミッション755でなければならない

ということです。

この制約があることでディレクトリ構成が以下のようになります。

var
 └ www
   ├ ドキュメントルート
   └ chrootに指定するディレクトリ
     └ 権限を委譲するためのディレクトリ(ドキュメントルートをマウントする)

ドキュメントルートの権限を変更
chown sftp-user:apache /var/www/html/
chmod 775 /var/www/html/
chrootに指定するディレクトリを作成
mkdir /var/www/sftp
chown root:root /var/www/sftp/
chmod 755 /var/www/sftp/
権限を移乗するためのディレクトリを作成
mkdir /var/www/sftp/sftp-user
chown sftp-user:apache /var/www/sftp/sftp-user
chmod 775 /var/www/sftp/sftp-user

権限を移乗するためのディレクトリを作らず、chroot直下にドキュメントルートを置くとrootユーザーしか操作できません。

ドキュメントルートをマウントする

mount -B /var/www/html /var/www/sftp/sftp-user
オプション 説明
B 任意のディレクトリを別のディレクトリ下にマウントできる

/var/www/sftp/sftp-user/ の配下にドキュメントルートと同様のファイル、ディレクトリが追加されます。
またファイルをアップロードしたら、相互追加されます。

サーバーリブート対策

再起動するとマウント解除されてしまいますので設定します。

vim /etc/fstab

追加

/var/www/html /var/www/sftp/sftp-user          none    bind            0 0

fstabについて丁寧に書かれている記事はこちら

以上です。サーバー内を好き勝手されたくない時はSFTPユーザーを作成しましょう。

4
4
2

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
4
4