助け合いフォーラム
$ 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の時のファイルのパーミッション
どうしても理解できず…
ファイルのデフォルトのパーミッションは666
umask 0037を設定
この時、6-0,6-3,6-7で、630になる気がするのですが、
回答では640になるとなっています。
考え方を教えてください。
666というのは
rw-rw-rw-の状態を表しますよね。
数値にするとr=4,w=2,x=1です。
3を引くというのはw=2,x=1の権限をはく奪するという意味なので、
wとxの権限がなくなったら所有グループの権限は残りr=4のみになります。
なので答えは640で合っていることになります。
コメント
この投稿に対して返信しませんか?