LinuCレベル1 101試験の例題と解説
1.02.1ファイルの所有者とパーミッション
今回は、 LinuCレベル1 101試験の出題範囲から、「1.02.1 ファイルの所有者とパーミッション」についての例題を解いてみます。指定のディレクトリ配下全てのパーミッションを一度に変更できる便利なコマンドオプションについて学んでみましょう。
例題
カレントディレクトリが /var/www のとき、カレントディレクトリにある html ディレクトリ配下すべてのパーミッションを一括で変更するコマンドを一つ選択してください。
htmlディレクトリ配下のすべてのディレクトリ・ファイルに対して、「所有グループ」の書き込み権限のみを追加する設定を行います。
(他の対象者のパーミッションは変更しないこと)
「/var/www」
$ls -l
dr-xr-xr-x. 2 root root 6 12月 24 2019 cgi-bin
drwxr-x--x. 5 root root 60 7月 21 10:23 html
- chmod -R g+w html
- chmod -v o+r html
- chmod -cR u+x html
- chmod -fR 575 /var/www/html
※この例題は実際の試験問題とは異なります。
解答と解説
正解は、「1. chmod -R g+w html」です。
ファイルやディレクトリにアクセスできるかどうかは、ファイルの「パーミッション」によって決まります。
パーミッションの確認は以下のコマンドで可能です。
ls -l, stat
ファイルやディレクトリのパーミッションは、「r」(読み込み)「w」(書き込み)「x」(実行)の3つのアルファベットで表します。
パーミッションを与える対象は、所有者・所有グループ・その他で分けられます。
例題を例に、表記を見ていきます。
$ls -ld html
drwxr-x--x. 5 root root 60 7月 21 10:23 html
表示結果の「rwxr-x--x」の部分がパーミッションを示しています。
先頭の「d」はディレクトリを示し、ファイルの場合は「-」となります。次の3文字が所有者、その後の3文字が所有グループ、最後の3文字がその他に対するアクセス権限を示しています。
パーミッションを変更するコマンドは「chmod」になります。chmodでパーミッションを指定する際には二種類の表記が存在します。一つは「アルファベット」、もう一つは「数字」になります。
アルファベット
対象者を下記のように表記することができます。
所有者 | = u |
所有グループ | = g |
その他 | = o |
所有者に読み出し権限を追加する場合
→ 「chmod u+r 指定のディレクトリ又はファイル」
その他に実行権を削除する場合
→ 「chmod o-x 指定のディレクトリ又はファイル」
数字
パーミッションを下記のように表記することができます。
「r(読み出し)」 | = 4 |
「w(書き込み)」 | = 2 |
「x(実行)」 | = 1 |
何も許可しない | = 0 |
上記の数字を足し算してパーミッションを指定することが可能です。
すべての対象者に読み出しと実行を許可する設定をするとき
→ 「chmod 555(対象者全てに4+1) 指定のディレクトリ又はファイル」
所有者のみにすべて許可するとき
→ 「chmod 700(所有者のみに4+2+1) 指定のディレクトリ又はファイル」
-Rオプションを指定することで、指定ディレクトリ配下のファイルやディレクトリのパーミッションをすべて変更できます。
構文は以下の通りです。
# chmod -R パーミッション内容 ディレクトリ名
選択肢の解説は以下です。
[1. chmod -R g+w html ]
正解です。
htmlディレクトリを指定し、-Rオプションによって指定ディレクトリ配下全てのパーミッションを変更しています。
また、所有グループ(g)に対し書き込み(w)を許可しています。
[2. chmod -v o+r html]
誤りです。
このパーミッション内容は、その他(o)に読み出し(r)を許可しています。そのため所有グループに対して書き込みの許可をしていません。また、このコマンドオプションでは指定したディレクトリ配下のパーミッションは変更されません。
-vオプションは、コマンドの実行状況を下記のように表示します。
# chmod -v o+r html
'html' のモードは 0757 (rwxr-xrwx) として保留されました
[3. chmod -cR u+x html]
誤りです。
-Rオプションを使用している点は正しいですが、パーミッションの内容がu+rになっています。これは所有者(u)に対して実行権(x)を与えています。
今回の問題では、所有グループ(g)に対して書き込み(w)の許可をしなければなりません。
-cオプションは、-vオプションと同じくコマンドの実行状況を表示します。-vオプションは変更点がない場合でもメッセージを表示するのに対して、-cオプションは変更点が存在しない場合にはメッセージを表示しません。
[4. chmod -fR 575 /var/www/html]
誤りです。
-Rオプションを使用している点は正しいです。
しかしパーミッション内容が「575」のため、所有グループ以外の対象者のパーミッションも変更しています。今回は所有グループのみパーミッションを変更する必要があるため、他の対象者へのパーミッションを指定しなければならない数字を使用することはできません。
-fオプションは、エラーメッセージを非表示にします。
例えば下記のように存在しないファイルを指定した場合デフォルトではメッセージが表示されますが、 -fオプションをつけると何も表示がされません。
# chmod 644 httt
chmod: 'httt' にアクセスできません: そのようなファイルやディレクトリはありません
# chmod -f 644 httt
ディレクトリ・ファイル操作時には、パーミッションの問題で動作が上手くいかない場合があります。そのようなときには今回学んだ「chmod」で適切なパーミッションに設定していきましょう。
例題作成者
株式会社デージーネット ソリューション開発部 山中咲彩