LPIC 101 umask値について

  • フォーラムは新サイトへ移行しました。
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2020-10-10 17:53
skjkgg523  半人前   投稿数: 7
問題ID: 34226についてです。

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

正解:「umask 077」

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

以上についてumask値を077に設定するとファイルのパーミションは666-77で589となり問題文の600にはならないかと思うのですがどなたかなぜ正解が077になるのか教えていただけませんでしょうか
宜しくお願い致します。
前の投稿 - 次の投稿 | 親投稿 - 子投稿.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」を意識してもう一度見てみると良いかと思います。
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 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」を意識して覚え直したいと思います。

ご回答ありがとうございました。

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.