- 2011年5月28日 19:24
- Linux -リナックス-
【こちらの記事は、約5分程でお読みいただけます。】
皆さん、こんにちは!
Linuxでファイルやディレクトリを作成したときに、
自動的に設定されるアクセス許可(パーミッション)が、
「umask値」という値を参照していることは知っている方も多いと思いますが、
実際に「umask値」がどのように処理されているか、ご存知でしょうか?
今回は、この「umask」について、ご紹介します!
多くの参考書やWebサイトでは、
「基準となるパーミッションの値から、umask値を引いた値が、
作成されたファイルやディレクトリのパーミッションに設定される」
と紹介されています。
たとえば、次のような形です。
⇒ 『作成されるパーミッション』 = 【基準のパーミッション】 - 【umask値】
| 基準のパーミッション | 6 | 6 | 6 | ||||||
| 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | |
| umask | 0 | 2 | 2 | ||||||
| 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | |
| 作成されるパーミッション | 6 | 4 | 4 | ||||||
| 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | |
引き算という計算方法は、人間にとって比較的計算しやすいもので、
ほとんどのケースでは問題は起きません。
しかし、この引き算を使った処理をumask値で行う場合、
umask値自体に「027」のように"7"という値を含んでいると、
作成されるパーミッションの値にマイナスの値が出てしまいます。
では、実際どのような処理をしているかというと、
次のような形になります^^
umask値「027」として例を見てみます。
計算式はこうなります。
⇒ 『作成されるパーミッション』 = 【基準のパーミッション】 & 【 (~umask値) 】
| 基準のパーミッション | 6 | 6 | 6 | ||||||
| 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | |
| umask | 0 | 2 | 7 | ||||||
| 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | |
| (~umask) | 7 | 5 | 0 | ||||||
| 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | |
| 作成されるパーミッション | 6 | 4 | 0 | ||||||
| 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | |
「&」は論理積を表し、「~」はビットの反転を表します。
基準のパーミッションとumask値を反転したものの論理積を求めるということです。
コンピューターにとっては、引き算よりもこちらのほうが
都合がよいのですが、人間にとっては、とても面倒です。
ですので、普段は「引き算」で考えてよいと思いますが、
『本当は違うんだ』ということを知っておくことが、大事ですね^^
--------------------------------------------------------------------------------
Linuxの設定方法を学習したいあなたへ、
プロが教えるKENスクールで、一からチャレンジしませんか??
⇒【ネットワーク Linux講座一覧】
WebサーバやメールサーバではLinuxが50%以上に
シェアを伸ばしている一方で、情報管理者の63.5%が
「Linuxを管理できる人員が不足している」と感じています。
今、この機会にLinuxを覚えておけば、就転職のニーズが
あること間違いなし!ぜひ学習していきましょう!
本日の更新者:
パソコンスクール KENスクール Networkコース
インストラクター 吉川
