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

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

答え1

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

できることは、ユーザーをグループに入れて、/etc/sshd_configumaskを含むいくつかのことをファイル経由で強制することです。

Match Group uploadusers
  ForceCommand internal-sftp -u 0002

この-u 0002オプションは、ユーザーがグループのメンバーである場合に、内部 SFTP プログラム/サブシステムとそれを介してアップロードされるすべてのファイルの umask を設定しますuploadusers

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

答え2

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

関連情報