web-dev-qa-db-ja.com

OpenSSH sftpコマンドを使用してファイルを配置するときにファイルのアクセス許可を指定する方法

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クライアントを使用しました。

2
Adi Roiban

SFTPクライアントがアップロードされたファイルの権限を指定しない場合、OpenSSH SFTPサーバーは新しく作成されたファイルに0664権限を割り当てます。これは、@ JimBの回答が示すように、-uスイッチを使用して変更できるデフォルトのumask 0002に対するものです。


SFTPクライアントが許可を指定した場合、OpenSSHサーバーは指定された許可を使用します(umaskは適用されません)。

一般的なSFTPクライアントの概要:

1
Martin Prikryl

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を送信する必要があります。

3
JimB

明示的なumask(詳細はman 8 sftp-server)で開始されていない限り、sftp-serverはユーザーのプロファイルのデフォルトのumaskを使用すると思います。

0
agy