web-dev-qa-db-ja.com

多くのUnixシステムでデフォルトのumaskが002または022なのはなぜですか?デフォルトでは安全ではないようです

LinuxとUnixを長い間使用しています。 Unixを初めて学んだのは、多くの学生がいるコンピューター教室で、講師はsshを使用して、私が勉強していた大学が提供するリモートワークステーションにログインできると教えてくれました。

その意味で、ワークステーションよりも学生の方が多かったため、Unixはマルチユーザーオペレーティングシステムであることをすぐに知っています。 (ピジョンホール原理。)

何年か使用した後、私は基本的にumask(デフォルトは002)が何であるか、およびユーザー(および新規ユーザー)のデフォルトの権限がフォルダーの755644(ファイルの場合)。

しかし、少し深く考えてみると、このようなマルチユーザーオペレーティングシステムでは、デフォルトの権限設定は安全ではないようです。データの共有が簡単になりますが、他のユーザーのファイルを自分のホームディレクトリに簡単に一覧表示してコピーできると、やはり不思議に思います。

では、なぜ多くのUnixシステムでデフォルトのumask 002なのでしょうか? traditional Unixがこの設計を選択した歴史的な理由はありますか?

(1つ考えられる理由の1つは、1970年から1980年の間、コンピューターは主に科学研究で使用され、計算能力が非常に限られていることです。そのため、初期バージョンのUnixが出たとき、デフォルトのアクセス許可は簡単にプライバシー保護の代わりに共有します。)

8
Bossliaw

Unixはもともと、長い間、プロの環境で使用されていました。プロの環境では、同僚と同じトピックに取り組むことは非常に一般的です。一部のファイルは機密情報です。たとえば、今まで見たすべての電子メールプログラムは、所有者(モード600)だけが読み取り可能なファイルを作成します。ただし、デフォルトでファイルを一般に読み取り可能にすることは理にかなっています。ほとんどのファイルは機密情報ではありません。

プライベートマシンでは、ユーザーが1人しかいないため、問題はありません。

共同作業をあまり行わない複数のユーザーが存在することが予想される一部のシステムは、umaskとして077を使用します。決定するのはシステム管理者次第です。

最近では、ネットワークプロトコルを介してアクセスされる中央リポジトリと複数の作業コピー(CVS、Subversion、git、Mercurialなど)を備えたバージョン管理システムが非常に一般的であるため、ユーザーが同じファイルに直接アクセスすることはあまり一般的ではありません。 1990年代までは、これはあまり一般的ではなく、ユーザーが他のユーザーが作業することになっていたファイルに読み取り権限を付与するのを忘れることが一般的な問題でした。

chmodの実行を忘れた場合でも、ファイルが常にプライベートになるようにするには、それらをプライベートディレクトリの下に置きます。

mkdir ~/private
chmod 700 ~/private

他の誰も(もちろんrootを除いて)~/privateの下のファイルにアクセスすることができますが、権限は関係ありません。