助け合いフォーラム

LinuC

LinuC Lv1-101(Ver10.0)
問題ID : 15003
問題を開く
umaskコマンドを実行すると以下のように表示された。この場合、新規で作成するファイルのパーミッションの説明として正しいものはどれか。(2つ選択)

$ umask
0037

正解

所有グループのユーザは読み取りのみができる

その他のユーザは何もできない

解説

umaskコマンドではマスク値というものを設定して、新規に作成するファイルとディレクトリのデフォルトのパーミッションを決定します。マスク値はユーザ毎に指定できます。通常「/etc/bashrc」などに設定されており、シェルの起動時にシステムのデフォルト値に戻ります。

書式:
umask [マスク値]

マスク値が0の場合に使用されるデフォルトのパーミッションは、ファイルが「666」、ディレクトリが「777」です。これらの値から、指定したマスク値を引いた値が新たなデフォルトのパーミッションとして設定されます。

umaskと単体で実行すると現在のumask値を表示します。
設問のマスク値「0037」の1桁目の0は、ファイル実行時の権限などに関する特殊なパーミッションですが、通常は0で特に意味を持ちません。2桁目以降の「037」は各桁が独立して、左から所有ユーザ、所有グループ、その他のユーザを表します。
新規で作成するファイルとディレクトリのパーミッションから各桁ごとに「037」を引いた場合、次のようになります。
なお、ファイルのデフォルトのパーミッションは「666」で実行権が無いので、umask値に関わらず実行権は付与されません。


上図より、新規で作成するファイルのパーミッションは「640」です。

したがって正解は
・所有グループのユーザは読み取りのみができる
・その他のユーザは何もできない
です。

以下は実行例です。


その他の選択肢については以下の通りです。
・所有ユーザは読み取り、書き込み、実行ができる
ファイルのデフォルトのパーミッション「666」には実行権は無く、マスク値「037」を引いても実行権が無いことは変わりませんので、誤りです。

・所有グループのユーザは読み取り、書き込みができる
所有グループのユーザは書き込みはできませんので、誤りです。

・その他のユーザは読み取りのみができる
その他のユーザはどの権限もありませんので、誤りです。

参考

パーミッションとは、ファイルやディレクトリに対する権限です。権限には「読み取り権」「書き込み権」「実行権」の3種類があります。
これらの権限は、「所有ユーザ」(ファイルの所有ユーザ)、「所有グループ」(ファイルの所有グループ)、「その他のユーザ」(所有ユーザ、所有グループ以外のユーザ)のそれぞれに対して設定されます。

誰がどのような権限を持つのか、パーミッションの表現方法には「記号表現」と「数値表現」の2つがあります。


例えば、以下のような表現があったとします。


左から順に「所有ユーザ」「所有グループ」「その他のユーザ」の権限を表しています。記号表現の「-」は権限が無い事を意味します。
「所有ユーザ」の権限は数値表現で6ですが、これは読み取り権(4)と書き込み権(2)の数値を足したもので、それらの権限がある事を表しています。
つまりこれは、「所有ユーザ」に「読み取りと書き込み」の権限、「所有グループ」「その他のユーザ」には「読み取り」の権限のみが与えられている事がわかります。

全てのユーザに「読み取り」「書き込み」「実行」の権限がある場合は、以下のように表現されます。


なおそれぞれの権限は、ファイルに適用した場合とディレクトリに適用した場合では、それぞれ許可される内容が異なりますので、注意して下さい。
試験では主にファイルに適用した場合について問われます。

上に戻る

umaskが037の時のファイルのパーミッション

公開日 2023/01/25

どうしても理解できず…

ファイルのデフォルトのパーミッションは666
umask 0037を設定

この時、6-0,6-3,6-7で、630になる気がするのですが、
回答では640になるとなっています。

考え方を教えてください。

2023/01/26 06:56

666というのは
rw-rw-rw-の状態を表しますよね。

数値にするとr=4,w=2,x=1です。

3を引くというのはw=2,x=1の権限をはく奪するという意味なので、
wとxの権限がなくなったら所有グループの権限は残りr=4のみになります。

なので答えは640で合っていることになります。


コメント

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?