[Linux] umask値の考え方

https://ping-t.com/modules/forum/index.php?topic_id=4662

LPIC 101 umask値について

フォーラムは新サイトへ移行しました。
このフォーラムではゲスト投稿が禁止されています

ツリー構造順で表示 投稿の新しいものから
なし LPIC 101 umask値について
msg# 1
前の投稿 – 次の投稿 | 親投稿 – 子投稿.1 | 投稿日時 2020-10-10 17:53
skjkgg523 半人前 投稿数: 7
問題ID: 34226についてです。

問題文:「ファイルとディレクトリを新規作成した際のデフォルトのパーミッションを、それぞれ「600」と「700」にしたい。適切なコマンドは次のうちどれか。」

正解:「umask 077」

解説:
666 – マスク値 = ファイルのデフォルトのパーミッション
777 – マスク値 = ディレクトリのデフォルトのパーミッション

以上についてumask値を077に設定するとファイルのパーミションは666-77で589となり問題文の600にはならないかと思うのですがどなたかなぜ正解が077になるのか教えていただけませんでしょうか
宜しくお願い致します。
なし Re: LPIC 101 umask値について
msg# 1.1
前の投稿 – 次の投稿 | 親投稿 – 子投稿.1 | 投稿日時 2020-10-10 20:50
arashi1977 長老 居住地: 広島 投稿数: 1715
問題IDがわかれば確認できるので、問題文、正解、解説まで転記する必要はないですよ。
引用:

解説:
666 – マスク値 = ファイルのデフォルトのパーミッション
777 – マスク値 = ディレクトリのデフォルトのパーミッション

以上についてumask値を077に設定するとファイルのパーミションは666-77で589となり問題文の600にはならないかと思うのですがどなたかなぜ正解が077になるのか教えていただけませんでしょうか

パーミッションは10進数ではなく8進数(というか、2進数の加算)です。
参考の「数値表現」のところにもありますが、r=4 w=2 x=1 となっているのですがこれは3ビットの数字をそれぞれに割り当てているだけです。
「2進数の101=10進数の5」みたいな話です。
なので、666を「10進数の666(6百6十6)」とすると間違いのもとなのです。

で、umaskは「どのビットを無視するか」というコマンドなんですね。
umask 077というのは「000 111 111」に変換され、1になっている部分が無視されるので「777→700」「666→600」とするようになるのです。

「r=4 w=2 x=1」を意識してもう一度見てみると良いかと思います。
なし Re: LPIC 101 umask値について
msg# 1.1.1
前の投稿 – 次の投稿 | 親投稿 – 子投稿なし | 投稿日時 2020-10-10 22:51
skjkgg523 半人前 投稿数: 7
arashi1977さま ご回答いただきありがとうございます。

引用:

で、umaskは「どのビットを無視するか」というコマンドなんですね。
umask 077というのは「000 111 111」に変換され、1になっている部分が無視されるので「777→700」「666→600」とするようになるのです。

「r=4 w=2 x=1」を意識してもう一度見てみると良いかと思います。

上記を元に改めて解説文を見直したところ理解できました。

類似の問題ID:34145で私が誤って覚えておりました10進数での考え方でたまたま問題と解答が合ってしまっていたことからずっと勘違いして覚えてしまっておりました。

今後はアドバイスいただきました「ビット」と「r=4 w=2 x=1」を意識して覚え直したいと思います。

ご回答ありがとうございました。
ツリー構造順で表示 投稿の新しいものから

>フォーラム検索へ

Linux、Netatalk、Samba、NFSを使用したファイルサーバーについて研究・運用しています。

fsをフォローする
参考リンク

コメント