SFTPを使用してサーバーにファイルをアップロードしようとすると、奇妙な問題が発生します。
最大限のセキュリティを確保するために、シェル( "/ bin/false")が無効になっているユーザーを使用してファイルをアップロードすると、アップロードされたファイルに対してモード640が表示されますが、これは必要なものではありません(ローカルファイルのモードは664です)。
ただし、同じユーザーに対してシェル「/ bin/bash」を有効にすると、正しいモード664が表示されます。
ここで何が起こっているのかわかりませんが、シェルを無効にするとアップロードされたファイルのモードが変わるのはなぜですか?
私のsshd構成:
Port 22
Protocol 2
AcceptEnv LANG LC_*
UsePAM yes
UseDNS no
Subsystem sftp internal-sftp
有効なシェルがないため、システムのデフォルトの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
オプションを確認してください。
これは、シェルが関与しているときにUMASKが適用されているためです。あなたの場合、(bashの場合)/ etc/bashrc内に適用されている可能性があります(これは、最新のRed Hat/Centos 7バージョンを想定しています)。これらのファイルの場所は異なる場合があります。何も使用しない場合は、/ etc/profileのUMASK設定を確認してください。