SFTPで目的のumaskを配置する方法は?


23

SFTPサーバー(openssh / sftp-server)があり、このサービスを使用しているユーザーにumask 002を設定したいと思います。各ユーザーにPAM(pam.d / common-session)と.profileを設定しようとしましたが、うまくいきませんでした。

SSHログインではすべて問題ありませんが、SFTP(gFTPを使用)で試してみると、022 umaskが設定されています。

私はすでに、sftp-serverを呼び出す前にumaskを変更しているsftp-serverのラッパーを使用しようとしましたが、うまくいきません。

助けがありますか?どうもありがとう!

回答:


25

OpenSSH 5.4p1以降、「-u」オプションを使用できます。たとえば、

Subsystem sftp /usr/lib/openssh/sftp-server -u 022

manページから:

 -u umask
         Sets an explicit umask(2) to be applied to newly-created files
         and directories, instead of the user's default mask.

それはすばらしい!!
できるだけ早く

5
-uオプションO / Wのために、この作品:Subsystem sftp /bin/sh -c 'umask 0002; /usr/lib/openssh/sftp-server'
スティーブ・クレイ

1
良い解決策。システムumaskに関係なくデフォルトの権限を設定するCyber​​Duckなどのクライアントシェルとアプリケーションの問題を解決します。すべてのクライアントアプリが適切なアクセス許可を設定して、ユーザーがグループファイルで一緒に作業できるようにすることを確認すると便利です。この設定は、ユーザーが必要に応じてファイルのアクセス許可をカスタマイズすることを妨げないことも追加すると便利です。
ゲルロス

最後に追加すること:sftp機能のみが必要で、ユーザーにシェルアクセスを許可する必要がない場合は、シェルにbashの代わりにrsshを使用し、/ etc / rssh.confでデフォルトのumaskを設定することも検討できます。。これは、サーバーの安全性を高めること
ゲルロス

7

これにより、他の人のフラストレーションの時間を節約できることを願っています...

GUI SFTPアプリケーションを使用している場合は、アップロードの許可を設定するための設定を確認してください。

上記のすべてのソリューションを試してみましたが、アプリケーションがそれらをオーバーライドしているだけでした。


^^はい、長い間、Weboideのソリューションに似たスクリプトを作成して、sftp接続でumaskを設定してきました。最近、これが過去ほどうまくいかなかった理由について頭をかき回していました。明らかに、ある時点で私のSFTPクライアントの更新により、sshで接続した後にumaskが明示的に設定されたため、図を見てください。
ジャレッドキペ

GUIだけではありません。クライアントでさえありません。アップロードしたテストファイルが0600で、クライアント(OpenSSH sftp)がリモート側にコピーしたことを見つけるのに時間がかかりすぎました。
xebeche

ありがとうございました!許可なしで長い間遊んでいた。
タニアラッシア

2

さまざまなハックと修正を適用しようとして何時間も試してみて、適切な解決策を見つけました!

SFTP用のumaskを選択できるSSH用のパッチがあります。ここからダウンロードできます:http : //sftpfilecontrol.sourceforge.net/

私にとっては(OpenSSH_5.2p1 + sftpfilecontrol-v1.3、OpenSSL 0.9.8g 2007年10月19日)完全に機能しています!


2
5.4p1以降、OpenSSHではumaskを設定するオプション '-u'が利用可能であることに注意してください。さらに下の私の答えをご覧ください。
Weboide

2

ssh構成ファイルでは、これを使用してファイルのモードを具体的に設定することもできます(クライアントが設定しようとするchmodをオーバーライドします)。ここではinternal-sftpを使用していますが、sftp-serverでも同じだと思います。

ForceCommand internal-sftp -u 0022   

0

このメッセージを引用するには:

/etc/init.d/sshに「umask 007」行を追加することで、これで問題なく動作しました。

Bashは、.profile対話型ログインシェルに使用します。私はsftp1つとして数えるとは思わない。umaskを設定できる場合/etc/bash.bashrc~/.bashrc、上記のヒントが機能しない場合や、よりきめ細かい制御が必要な場合があります。


2
答えてくれてありがとう、しかし私はすでにssh umask 002にいました(私も0002を試しました)そして動作しません:(bashrcも考慮されていません。私はSSHで直接ログインする場合はすべてが正常である私の問題だけSFTPクライアントである感謝。。!
mat_jack1

おっと、あなたは正しい。Bashが関与することを考えていた理由がわかりません。
追って通知があるまで一時停止します。

0

特定のopensshバージョンやカスタムパッチを必要としない簡単なソリューションを見つけるには、この質問を参照しください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.