サーバで動いているプロジェクトを直接さわって作業してほしいけど、
特定の場所だけに限定したいというようなケース。
chrootという方法で、アカウントの/を強制的に変更してそこ以外を見えなくします。
今回はRailsのappディレクトリの共有を想定した、ubuntuでの手順メモです。
こんなイメージ。
作業アカウントの準備
作業ユーザの追加
sftpで接続するためのアカウントをつくる。名前はなんでもいいけどあとからわかりやすいようにsftpuserとします。
$ sudo adduser sftpuser
ホームディレクトリの設定
作業ユーザのホームディレクトリをchrootのディレクトリにするために、rootの権限にする。
$ sudo chown root:root /home/sftpuser
$ sudo chmod 755 /home/sftpuser
Sublime Textでいじるためのディレクトリを準備する
こちらのパーミッションは作業ユーザでよい。
$ sudo mkdir /home/sftpuser/app
$ sudo chown sftpuser:sftpuser /home/sftpuser/app
作業ファイルの準備
作業したい実体があるディレクトリをマウントしておきます。
シンボリックリンクだとchroot内からみることができないぽいので。
$ sudo mount --bind /PATH/TO/PROJECT/app /home/sftpuser/app
/etc/ssh/sshd_config の変更
- sftpuserのルートディレクトリ指定
- パスワード認証を許可(必要であれば)
- sshd内部のsftpを使用(通常のsftpは制限ディレクトリ配下にないから)
Match User sftpuser
ChrootDirectory /home/sftpuser
PasswordAuthentication yes
ForceCommand internal-sftp
sshdリスタート。
$ sudo /etc/init.d/ssh restart
SublimteText側の設定
SFTPプラグインが必要です。
参考:http://ideahacker.net/2014/05/20/8417/
フォルダ追加
任意の場所に作業用のフォルダを作ってSublimeにドロップします。
右クリックでMap to Remote...というメニューを開きます。
sftp-config.json
設定ファイルができるので、よしなにします。
今回でいうと
"host": "YOURSERVER",
"user": "sftpuser",
"password": "YOURPASSWORD",
"remote_path": "/app",
あたりが関係します。
upload_on_saveをtrueにすると、ファイルを保存したらすぐにサーバ側にアップしてくれるようになったりします。
ダウンロード!
これでappの中身がローカルにダウンロードされるはず。