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_config
umaskを含むいくつかのことをファイル経由で強制することです。
Match Group uploadusers
ForceCommand internal-sftp -u 0002
この-u 0002
オプションは、ユーザーがグループのメンバーである場合に、内部 SFTP プログラム/サブシステムとそれを介してアップロードされるすべてのファイルの umask を設定しますuploadusers
。
個人的には、chroot
ユーザーが自分のディレクトリにのみアクセスできるようにもしています。ファイル内のディレクティブChrootDirectory
に適用されるオプションをチェックします。Match Group
sshd_config
答え2
この理由は、シェルが関与しているときに UMASK が適用されるためです。あなたの場合、おそらく (bash の場合) /etc/bashrc 内で適用されており (これは最新の Red Hat/Centos 7 バージョンを想定しています)、これらのファイルの場所は異なる場合があります。何も使用していない場合は、/etc/profile の UMASK 設定を確認してください。