web-dev-qa-db-ja.com

SFTPを使用してアップロードされたファイルには正しい権限がありません

SFTPを使用してサーバーにファイルをアップロードしようとすると、奇妙な問題が発生します。

最大限のセキュリティを確保するために、シェル( "/ bin/false")が無効になっているユーザーを使用してファイルをアップロードすると、アップロードされたファイルに対してモード640が表示されますが、これは必要なものではありません(ローカルファイルのモードは664です)。

ただし、同じユーザーに対してシェル「/ bin/bash」を有効にすると、正しいモード664が表示されます。

ここで何が起こっているのかわかりませんが、シェルを無効にするとアップロードされたファイルのモードが変わるのはなぜですか?

私のsshd構成:

Port 22
Protocol 2
AcceptEnv LANG LC_*
UsePAM yes
UseDNS no
Subsystem sftp internal-sftp
2
ob_dev

有効なシェルがないため、システムのデフォルトのumaskは適用/使用されていません。

あなたができることは、ユーザーをグループに入れ、umaskを含む/etc/sshd_configファイルを介していくつかのことを強制することです-

Match Group uploadusers
  ForceCommand internal-sftp -u 0002

-u 0002オプションは、ユーザーがuploadusersグループのメンバーである場合、internal-sftpプログラム/サブシステムおよびそれを介してアップロードされたファイルのumaskを設定します。

個人的には、ユーザーが自分のディレクトリにのみアクセスできるように、ユーザーもchrootします。Match Groupファイルのsshd_configディレクティブに適用されるChrootDirectoryオプションを確認してください。

3
ivanivan

これは、シェルが関与しているときにUMASKが適用されているためです。あなたの場合、(bashの場合)/ etc/bashrc内に適用されている可能性があります(これは、最新のRed Hat/Centos 7バージョンを想定しています)。これらのファイルの場所は異なる場合があります。何も使用しない場合は、/ etc/profileのUMASK設定を確認してください。

0
Eirik Toft