SFTP経由で他のシステムからLinux VMのディレクトリにプッシュされたファイルを受け取ります。このファイルには無効な権限がありますu=rw g= o=
。しかしu=rw g=rw o=
、。
/etc/ssh/sshd_conf
次のようにファイル調整を提案する多くの記事を読みました。Subsystem sftp internal-sftp -u 0002
OR Subsystem sftp /usr/libexec/openssh/sftp-server -u 0002
。としてサーバーを再起動しましたsudo systemctl restart sshd
。ただし、この設定を変更しても、受信ファイルのデフォルト権限には影響しません。私は何を逃したことがありませんか?
答え1
このsftp-server
設定マスクサーバープロセスの場合。 umaskは、サーバープロセスによって生成されたファイルに対するデフォルトの権限に影響します。 SFTPクライアントは明示的なSFTPプロトコルコマンドを送信して権限をオーバーライドし、クライアントが要求したように権限を設定できます。あなたはこれを見ることもできます。
最新バージョンには、sftp-server
個々のSFTPプロトコルメッセージを無効にする「-P」オプションがあります。これを使用して、ファイル権限を設定するためにクライアントによって送信されたコマンドを無効にできます。両方のメッセージは「setstat」と「fsetstat」です。これを無効にするには、sftp-server
またはサブシステム行に追加しますinternal-sftp
。
Subsystem sftp /usr/libexec/openssh/sftp-server -u 0002 -Psetstat,fsetstat
^^^^^^^^^^^^^^^^^^
エラーが発生した場合は、「/usr/libexec/openssh/sftp-server -Qリクエスト」を実行して、サポートされているリクエストの種類を一覧表示してください。エラーが発生すると、SFTPサーバーソフトウェアが古すぎて「-P」オプションをサポートできない可能性があります。
変更したら、SFTPクライアント(ユーザーが使用しているのと同じクライアント)でテストして、変更が意図した効果をもたらし、SFTPクライアントが正しく機能していることを確認する必要があります。
いくつかの文書:
- SFTPサーバーマニュアル
- SFTPRFC。セクション6.2を参照してください。