goofys でマウントした s3bucket
#df -h
Filesystem Size Used Avail Use% Mounted on
[bucket name] 1.0P 0 1.0P 0% /data/s3bucket
goofys でマウントした s3bucket と
sftp ユーザが接続直後にアクセスするディレクトリ
# pwd
/data
# tree
.
|-- chroot ← sftp ログインユーザ用のオーナーにしたシンボリックリンクを用意
| `-- SFTP_USER -> /data/s3bucket/SFTP_USER
`-- s3bucket ← goofys で s3Bucket をマウントする先
`-- SFTP_USER
# ls -la chroot/
lrwxrwxrwx 1 SFTP_USER SFTP_USER 24 Jul 10 10:44 SFTP_USER -> /data/s3bucket/SFTP_USER
SFTP のユーザと chroot 先の設定
# cat /etc/ssh/sshd_config
〜省略〜
AllowUsers SFTP_USER
〜省略〜
Match Group supplier
ChrootDirectory /data/chroot/%u
〜省略〜
sftp 鍵認証用に Linux ユーザ home 配下 .ssh/authorized_keys へ公開鍵を追加
ローカルから SFTP サーバへ接続
# sftp -oIdentityFile=~/.ssh/[id_rsa秘密鍵] [SFTP_USER]@[SFTPサーバ]
packet_write_wait: Connection to [SFTPサーバ] port 22: Broken pipe
Connection closed
このときの sftp サーバの message と secure ログ
# tail -f /var/log/messages
systemd: Created slice User Slice of [SFTP_USER].
systemd: Starting User Slice of [SFTP_USER].
systemd-logind: New session 18 of user [SFTP_USER].
systemd: Started Session 18 of user [SFTP_USER].
systemd: Starting Session 18 of user [SFTP_USER].
systemd-logind: Removed session 18.
systemd: Removed slice User Slice of [SFTP_USER].
systemd: Stopping User Slice of [SFTP_USER].
# tail -f /var/log/secure
Accepted publickey for [SFTP_USER] from [SFTP SERVER] port <省略> ssh2: RSA <省略>
pam_unix(sshd:session): session opened for user [SFTP_USER] by (uid=0)
fatal: bad ownership or modes for chroot directory "/data/chroot/[SFTP_USER]" [postauth]
pam_unix(sshd:session): session closed for user [SFTP_USER]
bad ownership or modes for chroot directory
シンボリックリンクの権限では sftp を騙せないんですね。。。
その後わかったこと
Cent os 6 では uid gid ともに 500 番台から 7 では 1000 番台から。
そのため s3fs でも 7 では usermod grpmod で id を 6 に合わせる必要がある。
sftp の chroot 先は root:root の 755 の必要あり。
これが制限となり共通グループがあっても 775 ではないため、書き込みと削除が出来ない。