SFTPサーバーにファイルをアップロードするためにさまざまなSFTPクライアントを使用していますが、ファイルを配置するときに使用されるデフォルトの権限に問題があります。
ファイルの配置を要求すると、WinSCPやFilezillaなどのSFTPクライアントは、明示的なファイル許可を要求せずにSSH_OPENコマンドを送信します。
一方、Linux(Red HatおよびUbuntu)のOpenSSH sftpコマンドは、SSH_OPENコマンドと「640」モードの両方を保留しているようです。
ファイルモードを明示的に設定しないようにOpenSSHコマンドを構成するにはどうすればよいですか?または、640以外のモードを送信するように構成するにはどうすればよいですか?
どうもありがとう!
更新:
OpenSSH sftpクライアントのソースコードを確認したところ、-Pが設定されていなくても、OpenSSH sftpは常にファイルモードを維持しようとするようです。 http://www.koders.com/c/fidD3B20680F615B33ACCB42398FAAFEE1C007DF942.aspx?s = rsa#L986
この問題を解決するために、PuTTY SFTPクライアントを使用しました。
SFTPクライアントがアップロードされたファイルの権限を指定しない場合、OpenSSH SFTPサーバーは新しく作成されたファイルに0664権限を割り当てます。これは、@ JimBの回答が示すように、-u
スイッチを使用して変更できるデフォルトのumask 0002に対するものです。
SFTPクライアントが許可を指定した場合、OpenSSHサーバーは指定された許可を使用します(umaskは適用されません)。
一般的なSFTPクライアントの概要:
PSFTP:アップロードされたファイルの権限を設定することはできません。 (ただし、Unixバージョンはソースローカルファイルのファイルを保持します)
OpenSSH sftp
:アップロードされたファイルの権限を設定することはできません。ソースローカルファイルのファイルを保持します。 -P
スイッチの詳細については、 OpenSSH SFTPサーバーはumaskを使用しますか、またはputコマンドの後にクライアント側のアクセス許可を保持しますか(chrooted環境)?
WinSCP:アップロードされたファイルの権限を設定できます
参照 https://winscp.net/eng/docs/ui_transfer_custom
(WinSCPの作成者です)
FileZilla:アップロードされたファイルの権限を設定できません。サーバーのデフォルト(umask)が適用されます。
Sftp-serverは、ユーザーのデフォルトのumaskで新しいファイルを作成します。これは、sftp-serverの-u umask
オプションでオーバーライドできます。
SFTP-SERVER(8)
-u umask
Sets an explicit umask(2) to be applied to newly-created files
and directories, instead of the user's default mask.
クライアント(OpenSSH sftp)は、-p
オプションを使用してローカルのアクセス権を保持することを選択できます。これにより、ファイルが送信され、適切にfchmodされます。
SFTP(1)
-p Preserves modification times, access times, and modes from the
original files transferred.
Sftpクライアントで必須ファイルモードを設定する方法を厳密に尋ねている場合。できません(少なくともopenssh sftp-clientでは)。ファイルを送信した後、chmodを送信する必要があります。
明示的なumask(詳細はman 8 sftp-server)で開始されていない限り、sftp-serverはユーザーのプロファイルのデフォルトのumaskを使用すると思います。