こんにちは、インフラエンジニアのryuです。
Linuxのパーミッションは、LPIC-1の勉強を始めると早い段階で出てくる分野です。
chmod 755 のような数字の指定は覚えたけれど、記号で書かれると迷う。そんな方も多いのではないでしょうか。
パーミッションは、問題の形を少し変えられるだけで正解しにくくなる分野でもあります。 数字と記号を行き来する計算や、ディレクトリに付けたときの意味の違いが、まとめて問われるからです。
この記事では、パーミッションと所有者に絞って10問の練習問題を用意しました。 すべてオリジナルの問題で、1問ずつ正解と解説を付けています。
パーミッションの考え方そのものを先に読みたい方は、『Linuxのファイル権限について徹底解説』で基本を確認してから解いてみてください。
パーミッションはLPIC-1のどこで出題される?¶
問題に入る前に、試験のなかでの位置づけを確認しておきます。
LPIC-1は、LPI(Linux Professional Institute)が認定しているLinuxの資格です。
現在の試験はバージョン5.0で、101試験(101-500)と102試験(102-500)の両方に合格すると認定されます。
パーミッションは、101試験の主題104「デバイス、Linuxファイルシステム、ファイルシステム階層標準」のなかにある、104.5「ファイルのパーミッションと所有者の管理」で出題されます。
| 項目 | 内容 |
|---|---|
| 試験 | 101試験(101-500) |
| 出題範囲の項目 | 104.5 ファイルのパーミッションと所有者の管理 |
| 重要度(weight) | 3 |
| 主なコマンド | chmod、umask、chown、chgrp |
| 主な内容 | 通常のファイルとディレクトリの権限、SUID・SGID・スティッキービット、ファイル作成時のマスク、グループを使った共有 |
101試験そのものは90分・60問で、200〜800点のスコアで500点が合格ラインです。
重要度(weight)は、その項目から出題される問題の多さの目安です。104.5は3なので、101試験のなかでは標準的な重みの項目です。
最初に押さえておく数字と記号の対応¶
問題を解くときに使う対応表を、先に置いておきます。 パーミッションは、読み取り・書き込み・実行の3つを、所有者・グループ・その他の3者それぞれに付けます。
| 記号 | 意味 | 数字 |
|---|---|---|
r |
読み取り | 4 |
w |
書き込み | 2 |
x |
実行(ディレクトリなら中に入る) | 1 |
- |
権限なし | 0 |
3者それぞれの数字を足すと、755 や 640 のような3桁の数字になります。
さらに特殊な権限として、SUID(4)・SGID(2)・スティッキービット(1)があり、これは4桁目として先頭に付けます。
ls -l で見ると、次のように表示されます。
$ ls -l report.txt
-rw-r----- 1 ryu dev 1024 Oct 17 09:00 report.txt
先頭の1文字がファイルの種類(- は通常のファイル、d はディレクトリ)で、そのあとの9文字が3文字ずつ所有者・グループ・その他の権限です。
数字と記号を行き来する問題¶
まずは、数字と記号の書き換えを確認する問題です。 ここで迷わなくなると、ほかの問題もずっと解きやすくなります。
問題1:記号表記を数字に直す¶
ls -l で -rw-r----- と表示されたファイルがあります。このパーミッションを数字で表したものはどれですか?
- A.
640 - B.
644 - C.
620 - D.
750
正解:A
所有者が
rw-で4+2+0=6、グループがr--で4+0+0=4、その他が---で0です。合わせて640になります。644はその他にも読み取りがある-rw-r--r--、750は-rwxr-x---です。
640 は、設定ファイルのように、所有者とグループだけが読めればよいファイルによく使われます。
問題2:記号でパーミッションを変更する¶
ファイル memo.txt のパーミッションについて、グループに書き込み権限を追加し、その他から読み取り権限を外したいと考えています。正しいコマンドはどれですか?
- A.
chmod g+w,o-r memo.txt - B.
chmod g=w,o=r memo.txt - C.
chmod u+w,g-r memo.txt - D.
chmod +w-r memo.txt
正解:A
記号で指定するときは、対象(
u所有者・gグループ・oその他・aすべて)、操作(+追加・-削除・=設定)、権限(r・w・x)の順に書き、複数の指定はカンマで区切ります。B の=は、その権限だけにする指定なので、グループの読み取り権限などがなくなってしまいます。
記号の指定は、ほかの権限を変えずに一部だけを足したり外したりしたいときに便利です。 数字の指定は、すべての権限をまとめて決め直すときに向いています。
問題3:SUIDを付けたときの表示¶
あるファイルに chmod 4755 を実行しました。ls -l で表示されるパーミッションはどれですか?
- A.
-rwxr-xr-x - B.
-rwsr-xr-x - C.
-rwxr-sr-x - D.
-rwxr-xr-t
正解:B
4桁目の
4はSUIDです。SUIDが付くと、所有者の実行権限の位置がxからsに変わります。C のsがグループの位置にあるのはSGID(2)、D のtはスティッキービット(1)です。
SUIDが付いたプログラムは、実行したユーザーではなくファイルの所有者の権限で動きます。
代表的な例は、一般ユーザーが自分のパスワードを変えるための /usr/bin/passwd です。
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root ... /usr/bin/passwd # サイズと日付は環境によって異なる
なお、実行権限がないのにSUIDだけが付いていると、小文字の s ではなく大文字の S で表示されます。
スティッキービットも同じで、その他の実行権限がなければ大文字の T になります。
ディレクトリのパーミッションの問題¶
ここからは、ディレクトリに付けたパーミッションの問題です。
ファイルとディレクトリでは、同じ r・w・x でも意味が変わります。 ここがいちばん間違えやすいところです。
| 権限 | ファイルの場合 | ディレクトリの場合 |
|---|---|---|
r |
中身を読める | 中にあるファイルの名前を一覧できる |
w |
中身を書き換えられる | 中でファイルを作成・削除・名前変更できる |
x |
プログラムとして実行できる | 中に移動したり、中のファイルにアクセスしたりできる |
問題4:ディレクトリに移動するために必要な権限¶
一般ユーザーが cd コマンドで、あるディレクトリの中に移動するために必要な権限はどれですか?
- A. ディレクトリの読み取り権限(
r) - B. ディレクトリの書き込み権限(
w) - C. ディレクトリの実行権限(
x) - D. ディレクトリの中にあるファイルの読み取り権限(
r)
正解:C
ディレクトリの中に移動するには、そのディレクトリの実行権限(
x)が必要です。読み取り権限(r)だけでは、中のファイル名は一覧できても、cdで中に入ることはできません。
cd しようとして Permission denied が出たときに、どこを見ればよいかは『ディレクトリでPermission deniedが出たときの対処方法』でも紹介しています。
問題5:読み取り専用のファイルを削除できるか¶
ユーザー ryu が、自分の所有するディレクトリ /home/ryu/work(パーミッションは rwx------)の中にあるファイル old.log を削除しようとしています。old.log の所有者は root で、パーミッションは r--r--r-- です。ディレクトリにスティッキービットは付いていません。このとき、正しい説明はどれですか?
- A. ファイルに書き込み権限がないので、
ryuは削除できない - B. ファイルの所有者が
rootなので、ryuは削除できない - C. ディレクトリに書き込み権限と実行権限があるので、
ryuは削除できる - D.
chmodでファイルに書き込み権限を付けないかぎり、削除できない
正解:C
ファイルを削除できるかどうかは、ファイル自体の権限ではなく、そのファイルが入っているディレクトリの書き込み権限と実行権限で決まります。削除は、ディレクトリの中身(どのファイルがあるかの一覧)を変更する操作だからです。
rmは、書き込み権限のないファイルを消すときに確認のメッセージを出しますが、yと答えれば削除されます。
この問題は、ファイルの権限だけを見て A を選んでしまいやすい問題です。 実務でも「消せないはずのファイルが消えた」ときは、ディレクトリの権限を確認してみてください。
問題6:/tmp に付いている権限¶
/tmp を ls -ld で確認したところ、drwxrwxrwt と表示されました。最後の t の説明として正しいものはどれですか?
- A. 誰でもこのディレクトリのファイルを削除できる
- B. ファイルを削除・名前変更できるのは、そのファイルの所有者、ディレクトリの所有者、rootに限られる
- C. このディレクトリに作られたファイルは、ディレクトリのグループを引き継ぐ
- D. このディレクトリの中のプログラムは、所有者の権限で実行される
正解:B
tはスティッキービットです。ディレクトリにスティッキービットが付いていると、書き込み権限があっても、他人のファイルは削除や名前変更ができなくなります。/tmpは誰でもファイルを置けるディレクトリなので、他人のファイルを消せないようにこの権限が付いています。C はSGID、D はSUIDの説明です。
問題5との違いに注目してください。 スティッキービットがないディレクトリでは、書き込み権限があれば他人のファイルも消せます。スティッキービットは、その動きを制限するための権限です。
# スティッキービットを付ける(記号でも数字でも指定できる)
$ chmod +t /share/tmp
$ chmod 1777 /share/tmp
問題7:共有ディレクトリのグループをそろえる¶
ディレクトリ /share/project(グループは dev)に、グループ dev のメンバーがファイルを作ったとき、作ったユーザーの主グループではなく、自動的にグループ dev が付くようにしたいと考えています。ディレクトリに設定する権限はどれですか?
- A. SUID
- B. SGID
- C. スティッキービット
- D. その他の書き込み権限
正解:B
ディレクトリにSGIDを付けると、その中に作られたファイルやディレクトリは、ディレクトリと同じグループを引き継ぎます。チームでファイルを共有するディレクトリでよく使われる設定です。設定するには
chmod g+s /share/projectまたは、たとえばchmod 2775 /share/projectのように4桁目に2を指定します。
LPIの出題範囲でも、グループを使ってファイルを共有する方法が項目に含まれています。 SGIDは、ファイルに付けたときとディレクトリに付けたときで意味が変わるので、両方の動きを覚えておきましょう。
所有者とumaskの問題¶
最後は、所有者の変更と、新しく作るファイルの権限を決める umask の問題です。
問題8:所有者とグループを同時に変更する¶
ファイル app.conf の所有者を alice、グループを dev に一度に変更したいと考えています。正しいコマンドはどれですか?
- A.
chown alice:dev app.conf - B.
chgrp alice:dev app.conf - C.
chown dev:alice app.conf - D.
chmod alice:dev app.conf
正解:A
chownは、所有者:グループの形で指定すると、所有者とグループを同時に変更できます。順番は所有者が先で、グループが後です。chgrpはグループだけを変更するコマンドで、chmodはパーミッションを変更するコマンドです。
chown は、ファイルの所有者を変えるので、通常はroot権限で実行します。
コマンドの細かい使い方は『chownコマンドで所有者や所有グループを変更する方法』にまとめています。
問題9:グループだけを変更する¶
ディレクトリ /share/docs とその中のファイルすべてについて、グループだけを sales に変更したいと考えています。正しいコマンドはどれですか?
- A.
chgrp sales /share/docs - B.
chgrp -R sales /share/docs - C.
chmod -R sales /share/docs - D.
chown -R sales /share/docs
正解:B
chgrpはグループを変更するコマンドで、-Rを付けるとディレクトリの中も再帰的に変更します。A は/share/docs自体しか変わりません。D のchown -R salesは、グループではなく所有者をsalesに変えてしまいます。グループだけならchown -R :sales /share/docsのようにコロンを先に付ける書き方もあります。
-R は、chmod・chown・chgrp に共通するオプションです。
ただし、多くのファイルの権限を一度に変えるので、実行する前に対象のディレクトリを pwd などで確認する習慣をつけておきましょう。
問題10:umaskとファイルのパーミッション¶
umask の値が 027 のとき、touch コマンドで新しく作った通常のファイルのパーミッションはどれですか?
- A.
750 - B.
640 - C.
644 - D.
027
正解:B
通常のファイルは
666(rw-rw-rw-)を基準に作られ、そこからumaskで指定したビットが取り除かれます。666から027のビットを外すと640(rw-r-----)になります。A の750は、ディレクトリ(基準は777)を作ったときの結果です。
ディレクトリを作ったときの umask の計算は、『LPIC 101試験の練習問題』の問題10で扱っています。
ファイルとディレクトリで基準の値が違うことを、セットで覚えておきましょう。
$ umask
0022
$ umask 027
$ touch test.txt && mkdir testdir
$ ls -ld test.txt testdir
-rw-r----- 1 ryu ryu 0 Oct 17 09:30 test.txt
drwxr-x--- 2 ryu ryu 4096 Oct 17 09:30 testdir
間違えやすいポイントのまとめ¶
10問を解いてみて、いかがだったでしょうか?
今回の問題に出てきた、取り違えやすい組み合わせを表にしておきます。
| 混同しやすい組み合わせ | 違い |
|---|---|
chmod g=w と chmod g+w |
書き込みだけにするか、書き込みを追加するか |
所有者の位置の s とグループの位置の s |
SUIDか、SGIDか |
小文字の s・t と大文字の S・T |
実行権限があるか、ないか |
ディレクトリの r と x |
名前の一覧か、中に入れるか |
| ファイルの削除に必要な権限 | ファイルではなく、ディレクトリの w と x |
| スティッキービットとSGID | 他人のファイルを消せなくするか、グループを引き継ぐか |
chown alice:dev と chgrp dev |
所有者とグループを両方変えるか、グループだけを変えるか |
ファイルとディレクトリの umask |
基準が 666 か、777 か |
パーミッションの問題は、ファイルとディレクトリのどちらに付いた権限なのかを最初に確かめると、正解を選びやすくなります。 問題文を読んだら、まず対象がどちらなのかを確認する癖をつけておきましょう。
実際に手を動かして確かめたい方は、仮想マシンで一般ユーザーを2人作り、/tmp に置いたファイルを互いに消せるかを試してみるのがおすすめです。
sudo を使ってroot権限で作業する方法は『sudoコマンドの使い方』で確認できます。
続きはInfraAcademyの問題演習で¶
今回の10問で、パーミッションのどこが苦手か見えてきたと思います。
パーミッションは、数字と記号の書き換えのように、問題をたくさん解くほど速く正確に答えられるようになる分野です。 InfraAcademyでは「(無料)LPICの練習問題で毎日トレーニング300問」を用意していて、パーミッション以外の101試験・102試験の範囲も無料で解くことができます。
続きは『InfraAcademy の資格模擬問題』から解いてみてください。
Linuxを基本から順番に学び直したい方は、『Linuxロードマップ』で学習の流れを確認できます。 LPIC全体の勉強の進め方は『LPICの勉強方法』に、101と102から5問ずつ出題した問題は『LPIC-1の練習問題10問』にまとめています。
まとめ¶
最後に、この記事のポイントを振り返ります。
- パーミッションは101試験の104.5で出題され、重要度(weight)は3
r=4、w=2、x=1 を足して、所有者・グループ・その他の3桁にする- SUID(4)・SGID(2)・スティッキービット(1)は4桁目として指定する
- ディレクトリの
xは中に入る権限、wは中のファイルを作成・削除する権限 - ファイルを削除できるかは、ディレクトリの権限で決まる。スティッキービットはそれを制限する
umaskは、ファイルなら666、ディレクトリなら777から引いて考える
パーミッションは、サーバーを運用し始めるとほぼ毎日目にする知識です。 試験のためだけでなく、トラブルの原因を見つける力にもなるので、1問ずつ確実に覚えていきましょう。
参考¶
- LPIC-1 Exam 101 and 102 Objectives(Linux Professional Institute)
- LPIC-1 Overview(Linux Professional Institute)
- 104.5 Manage file permissions and ownership(LPI Learning)
- chmod(1) - Linux manual page(man7.org)
- chown(1) - Linux manual page(man7.org)
- chgrp(1) - Linux manual page(man7.org)
- umask(2) - Linux manual page(man7.org)



