私は、セットアップのOpenSSHのへの道を探してきたのumaskに0027
すべての接続タイプ間で一貫性のある方法で。
私が言及している接続タイプ別:
- sftp
- scp
- sshホスト名
- sshホスト名プログラム
3.と4.の違いは、前者は通常/etc/profile
情報を読み取るシェルを起動するのに対し、後者は起動しないことです。
さらに、この投稿を読むことで、OpenSSHの新しいバージョンに存在する-uオプションに気付きました。ただし、これは機能しません。
また、/etc/profile
今含まれていますumask 0027
。
ポイントごとに行く:
- sftp- ここで述べたように設定
-u 0027
するだけでは不十分です。sshd_config
このパラメーターを設定しない場合、sftpはデフォルトでを使用しますumask 0022
。これは、2つのファイルがある場合:
-rwxrwxrwx 1 user user 0 2011-01-29 02:04 execute
-rw-rw-rw- 1 user user 0 2011-01-29 02:04 read-write
sftpを使用して宛先マシンに配置すると、実際に次のようになります。
-rwxr-xr-x 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write
ただし、宛先マシンに設定-u 0027
するsshd_config
と、実際に次のようになります。
-rwxr--r-- 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write
実際には次のようになっているはずなので、これは予期されていません。
-rwxr-x--- 1 user user 0 2011-01-29 02:04 execute
-rw-r----- 1 user user 0 2011-01-29 02:04 read-write
なぜこれが起こるのか誰でも理解していますか?
scp - sftpの設定に関係なく、許可は常に
umask 0022
。現在、これを変更する方法がわかりません。sshホスト名-シェル
/etc/profile
はデフォルトで読み取りを行うため、ここでは問題はありませんumask 0027
。これは現在のセットアップを意味します。ssh hostname プログラム-scpと同じ状況。
要するに、上のumaskを設定することsftp
はなく、それが必要として変更結果はssh hostname
予想読書として動作/etc/profile
し、両方scp
とssh hostname program
しているように見えるumask 0022
どこかをハードコーディング。
上記の点についての洞察は大歓迎です。
編集: opensshを手動でコンパイルする必要があるパッチを避けたい。システムはopenssh
、maverickのパッケージを使用してUbuntu Server 10.04.01(明id)LTSを実行しています。
回答: poigeで示されているように、pam_umaskを使用するとうまくいきました。
正確な変更は次のとおりです。
に追加された行/etc/pam.d/sshd
:
# Setting UMASK for all ssh based connections (ssh, sftp, scp)
session optional pam_umask.so umask=0027
また、ソース/etc/profile
かどうかに関係なくすべてのログインシェルに影響を与えるために、同じ行もに追加されました/etc/pam.d/login
。
編集:コメントのいくつかの後、私はこの問題を再テストしました。
少なくともUbuntu(私がテストした場所)では、ユーザーのシェルの初期化ファイル(.bashrc、.zshrc、...)に異なるumaskが設定されている場合、PAM umaskは無視され、代わりにユーザー定義のumaskが使用されるようです。の変更は/etc/profile
、ユーザーがinitファイルでこれらの変更を明示的に提供しない限り、結果に影響しませんでした。
この動作がすべてのディストリビューションで発生するかどうかは、現時点では不明です。
UsePAM yes
sshd_configにありますか?
/etc/profile
。何かalias umask=/bin/true