sftpのchrootを利用して、特定ユーザにdrupalサイトコンテンツの編集権限を与える方法

一般ユーザは /var/www/html 以下のディレクトリには書き込み権限を持たないので、ファイルのアップロードはできません。DrupalやWordpressなどのCMSからアップロードすればよいのですが、設定ファイルやCSSを直接編集したり置き換えたい場合に困ります。

自分のサーバならばホームディレクトリや、リブートで消える/tmpにscpで一時的にアップロードして、ssh接続したコマンドラインでサイトのディレクトリにsudoして移動すればよいのですが、サイト編集のためだけにsudo権限を与えるのはリスクが大きすぎます。ディレクトリのオーナーやパーミッションを変更すれば設定可能ですが、ユーザごとに設定が必要になりますし、セキュリティ上好ましくありません。

そのような場合にはWebサイトのディレクトリに直接アップロードできるように設定します。 WEBサイトコンテンツだけの編集ができるように必要十分なsftpのアクセス権限だけを与えます。シェルを使用しないのでsshは許可しません。

 

  • ユーザ claire 作成
$ sudo useradd -d /home/claire -s /bin/bash -m claire
$ sudo passwd claire
  • WEBサイトコンテンツ directory のオーナ設定、確認。chrootオーナはrootである必要があります。
$ sudo chown root:root /var/www /var/www/html /var/www/html/tech.octaviadata.com
$ ll -d /var/www /var/www/html /var/www/html/tech.octaviadata.com
drwxr-xr-x  3 root root 4.0K Sep 14  2014 /var/www/
drwxr-xr-x 49 root root 4.0K Jul 31 11:35 /var/www/html/
drwxr-xr-x  9 root root 4.0K Jun 20 15:26 /var/www/html/tech.octaviadata.com/
$ sudo chown -R claire:www-data sites/

 

  • ssh 許可設定
$ sudo vim /etc/ssh/sshd_config
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem  sftp    internal-sftp

以下は一番下に記述。

AllowUsers claire

Match user claire
  ChrootDirectory /var/www/html/tech.octaviadata.com
  X11Forwarding no
  AllowTcpForwarding no
  ForceCommand internal-sftp
$ sudo service ssh restart

 

  • クライアントから設定確認
$ sftp claire@tech.octaviadata.com