2017-05-14 12 views
0

私はこの警告が出されGHCiのを開始するには、私のプロジェクトディレクトリに.ghciファイルモード644を作成する場合:プロジェクト固有のGHCiの初期化ファイルのパーミッションの警告を

*** WARNING: .ghci is writable by someone else, IGNORING! 
Suggested fix: execute 'chmod go-w .ghci' 

この提案を採用する上での起動ghciを取得します。

*** WARNING: . is writable by someone else, IGNORING! 
Suggested fix: execute 'chmod go-w .' 

この提案を採用すると、警告が表示されなくなります。これはうまくやっていますが、これは退屈で厄介です。特に、デフォルトで作成されたディレクトリのアクセス許可は、ghciが必要と思われるものではありません。

なぜ.ghciファイルを追加するとこの現象が発生するのですか?ghciが心配していることは何ですか?ローカルディレクトリの.ghciファイルがないと、ghciはアクセス許可について抗議しません。

答えて

0

なぜこの行動.ghciファイルの原因を追加することなく、それがまさにそれGHCiのが何であるかですが心配?ローカルディレクトリの.ghciファイルがないと、ghciはアクセス許可について抗議しません。

umaskは、デフォルトで新しく作成されたすべてのファイルがグループ書き込み可能になるように設定されていると思います。これにより、システム内のすべてのユーザーが書き込むことができます。一部のGHCiコマンドでは、コマンドを実行することができます。したがって、.ghciファイルに書き込むことができる人は、GHCiを起動するとすぐにアカウントをハイジャックすることができます。

GHCiは、他の人が書き込み可能なファイルの解釈を拒否してこの攻撃を防止しようとします。これが当てはまるかどうかは議論の余地がある。

一方で、アクセス許可を変更するのは簡単です。.ghciを再生成しない限り、一度だけ行う必要があります。自動的に再生成された場合でも、chmodを実行できるスクリプトを使用することができます。あるいは、おそらくもっと良く、あなたのumaskをより厳密に設定して、新しいファイルが厳密なアクセス許可を得るようにしてください(私はumask 002を使うべきだと思います)。これはすべてのシェルに対して一度だけ実行するか、シェルのinitファイルに入れる必要があります。

一方、GHCiは、あなたがあなた自身を吊るす必要があるすべてのロープを与えるために使用される(使用されている)大部分のUNIXとは異なり、ここで少し慎重です。おそらくフラグghci --ignore-config-permissionsが役に立ちます。

+0

ghcは私の個人的なシステムのセキュリティをどのように管理するのかを指示してはいけないと思っていますが、ghciは '!'これらのコマンドは、ローカルの.ghciが外部からダウンロードされたパッケージに含まれている場合、知らないうちにセッションに注入される可能性があります。したがって、設計上の決定はそのリスクを回避しようとしています。もっと厳しいumaskを設定することは答えですが、単一のユーザーワークステーションでこれを自動的に実行しない傾向があります。 – andro

関連する問題