助け合いフォーラム
初歩的かもしれませんが質問失礼いたします。
ファイルのデフォルトのパーミッションについてです。
「パーミッションの表記は各桁が独立して、左から所有ユーザ、所有グループ、その他のユーザを表します。ですのでumask値を引く際も各桁ごとに引きます。」とあります。
666-77は各桁が独立し計算されるので6-7でマイナスの値を取る際もエラーや繰り下げが起こるわけではなく6-7=0となり、666→600となるということでしょうか?
裏を返せば設問の選択肢外ですが、umask 088というコマンドを打っても成立しますでしょうか?
宜しくお願いいたします。
2023/01/23 21:23
問題の解説で紹介されている
666 - マスク値 = ファイルのデフォルトのパーミッション
777 - マスク値 = ディレクトリのデフォルトのパーミッションパーミッションの表記は各桁が独立して、左から所有ユーザ、所有グループ、その他のユーザを表します。ですのでumask値を引く際も各桁ごとに引きます。
というのは実は正確な説明ではなく、正確には引き算ではなく論理演算(ビットを反転して論理積をとる)を行います。
引き算を使うのは便宜上の説明なので、「6-7はマイナスだから…」のように考え出すと???となります。
ひとまずはそういうものだと覚えておいて、興味がわいたら論理演算について学習してみてください。
裏を返せば設問の選択肢外ですが、umask 088というコマンドを打っても成立しますでしょうか?
umask に指定するのは8進数であり、8進数に8は使えませんので、設定しようとすると
$ umask 088
-bash: umask: 088: octal number out of range
のようにエラーになりますね。
コメント
この投稿に対して返信しませんか?
y ysatoag
2023/01/23 22:06
tnishita2様 早い回答大変ありがとうございます。 まさか単純な引き算ではなく論理演算が根底にあるとは初耳でした。 調べて実際に計算してみると確かに両方ともumask077で700と600と答えが出ました! 2進数にしたときに気づいたのですが、これパーミッションの2進数の値ががそれぞれの所有ユーザ、所有グループ、その他のユーザのrwxに対応していて、01でOnOffの意があるのですね。 とにかくより深い学びと新しい発見がありました。 教えて頂きありがとうございました!