@kotyのブログ

PythonとかAWSとか勉強会のこととかを、田舎者SEがつづります。記事のライセンスは"CC BY"でお願いします。

SFTP時のumask

ユースケース

  • 複数のデザイン会社がサイトに静的コンテンツをuploadしたい
  • デザイン会社ごとにログインユーザーを分けたい
  • 無駄なポートは開けたくない
  • php拡張子も許容
  • AWS上でAmazon Linux2を使っている

このようなケースの場合、FTP、FTPS、SFTP、SCPが選択肢に挙げられる。ちょっと調べた限りmacだとscpクライアントに良いものが無い。ソフトウェアエンジニア相手ならscpコマンドでええやんと言えるのだが。。。余計なポートも開けたくないし当然暗号化はしないといかん。というわけで、SFTPを選択することになった。

ソリューション

手抜きで恐縮だが、結論から言うと、ほぼ以下でできる。

epnote.net

が、このままだとuploadしたときに 744で書き込まれてしまい、upload後に他のユーザーが上書きできなくなる。Centos7の既定のumaskは022で*1であり、仮に775でuploadしても755に変えられてしまう。

というわけで、umaskを明示的に設定した。

        ForceCommand internal-sftp -u 002

これでほかのユーザーでも同じグループに所属していれば上書きできるようになる。

蛇足

本題から外れるので言及しないが、実際にはALBで冗長化しているためuploadしたあとに各ノードにファイルを同期してやる必要もあり、unixユーザーの追加作業もあいまってこの構成は運用負荷が高めである。phpやめようぜと調整し、S3にホストしてIAMを都度振り出すように運用すのがイケてるエンジニアなんだろう。あるいは最近出たNFSのマネージドサービスを使うとか。。。

*1:必ずしもそうではないようだが https://www.pupha.net/archives/151/