Linux用語, LPIC問題

# Linuxについて

## パーティション

ハードディスクに対して、ひとつのドライブとして利用したい容量を指定し、区画を作ったものです。OS上ではひとつのパーティションがひとつのドライブとして扱われます。
例えば750GBのハードディスクがあるとき、パーティションのサイズ(容量)に750GBを指定するとディスク全体がひとつのパーティションになり、それがひとつのドライブになります。
500GBと指定すると、500GBのパーティションひとつと、OSから利用できない250GBの空きスペースが作られます。この250GBを2つ目のドライブに指定することもできます。
このように、パーティションを分割する作業を「パーティションを切る」ともいいます。


## スワップ領域（英：swap space）

使っていないメモリの内容を一時的にしまっておくための場所

メモリの内容を一時的にしまっておく「場所」を指す用語が「スワップ領域」です。
メモリの内容を一時的にしまっておく「ファイル」が「スワップファイル」です。
メモリの内容を一時的にしまっておく「パーティション（ハードディスク内のお部屋）」が「スワップパーティション」になります。

スワップ領域の種類として、スワップファイルとスワップパーティションがあると理解しています。


![](https://uc5fff020e2ebfb5a438e4820f4c.previews.dropboxusercontent.com/p/thumb/ABOVxHxE6zul8vgXoqyXYKlpUZ76DBi3kwsqqZoJiTzLt_BWhP-oGGguu66hVYDuigKI2BxQm_zkmNCjNtYrbnIwfM2A4Jmc9U6LlsYPCX_eq2uxyfI3KspU6H0c729sCL3bnYQPoK75Ei5HKCPOAcxnWXliD6bCP75n2xuN0rUlTKvoEoi7Q__GZeJJPVj9NQcfO6O1YpHShtwFxqNC21ZiQJu2PKxAwRXLpYI58AOXy7wNLxQ2X09bEXJRyvxsaoo-fgWs1qa7Dq3aSp9yR8r9/p.png)



## ハードリンク

・ファイルに付けたあだ名
・元のファイルとハードリンクは（ほぼ）同じ物
・状況によっては、ハードリンクが削除されると元のファイルも削除される
・同じパーティションにしか作れない
・フォルダに対しては作れない


## シンボリックリンク

・ファイルやフォルダの代理人ファイル
・元のファイルとシンボリックリンクは別物
・シンボリックリンクを削除しても元のファイルに影響はない
・どこにでも作れる
・フォルダに対しても作れる


## パーミッションとは？

Linuxを始めとしたUnixLikeSystemではファイルやディレクトリ一個一個に許可属性を与え、管理出来るようになっている。これを「パーミッション」という。
それぞれ「所有者」「グループ」「その他のユーザ」にパラメータを割り振りが可能となっている。グループという概念がわからない方は下記を参考に。
[【初心者向け】Linuxのグループとは？ ざっくりの説明](https://eng-entrance.com/linux-user-group)

特殊なパラメータもあるがパラメータは基本的に「読み込み」「書き込み」「実行」の三つだ。実行と読み込みなど複数指定することも可能となっている。

### セキュリティのために存在している

パーミッションはセキュリティのために重要だ。特にシステムの管理者はシステム全体のパーミッションをおおまかで構わないが把握しておくべきだろう。
例えば、一般ユーザはシステムに書き込みが出来ないようになっている。不意な誤動作をしてもシステムに与える影響を最小限とするためだ。
これもパーミッションのお陰だ。パーミッションを適切に管理すると事故防止になる。
他にも例えば、本番環境にあるWebサイトを誤って編集してしまったということが無いように、責任者以外は本番環境のWebサイトを編集できないようにすることなどができる。

### 余分な実行許可は与えないようにしておく

基本的にファイルに余分な実行許可は与えないように心がけよう。不適切なパーミッションは思わぬ事故につながる。
例をあげるとデフォルトでインストールされているであろう「rcp」「rlogin」などは通信が暗号化されない危険なリモート操作を許してしまうので、実行権限を剥奪したほうがよい、などだ。

### 実際のパーミッションをみてみる

適当なディレクトリで下記のようにしてみよう。

```
$ touch myfile.txt
```

```
$ ls -l myfile.txt
```

すると
```-rw-r--r-- 1 ken users 0 12月 22 16:28 myfile.txt```
といったような行が表示されるだろう。
今注目すべきなのは「-rw-r--r--」と「ken users」という部分だ。詳細を説明していくが、そのまえに「r」や「w」といったフラグについて理解しよう。

- r:読み込み許可 ファイルを開くときなどに必要な権限である。これがないとファイルが開けない
- w:書き込み許可 ファイルを編集変更する場合に必要な権限である。「r」と組み合わせて使用する。所有者には基本的に読み込み、書き込み両方の権限がわりあてられることが多い。
- x:このフラグが設定されていると、ファイルに実行権限が与えられ実行可能となる。スクリプトなどの場合実行権限を割り当てることになる。またディレクトリはxフラグを与えないと開くことが出来ない。
- d:ディレクトリの場合このフラグが表示される
- l:リンクファイルの場合このフラグが表示される。
- -:は指定していないというマークである。
- s:SUIDかSGIDのフラグ[(別途ページでも解説)](https://eng-entrance.com/linux-permission-suid)
- t:スティッキービットのフラグ[(別途ページでも解説)](https://eng-entrance.com/linux-permission-stickybit)

ちょっとわかりにくいかもしれないので、「r = read 読み取り可」「w = write 書き込み可」「x = exec 実行可」「d = directory ディレクトリですという表示」というのだけまずは覚えておこう。
さて注目してほしい部分だけを抜きだして、区切りをいれて表記してみた。
`①- ②rw-　③r--　④r-- ⑤ken ⑥users`
はじめのごちゃごちゃした部分は、1、3、3、3で分かれるイメージだ。

**①はファイルのタイプ**
ここには「ディレクトリか」「リンクファイルか」「通常ファイルか」を判別するためのフラグが表示される。
通常ファイルの場合とくにフラグがたたないので「-」のままとなる。ディレクトリの場合「d」が、リンクファイルの場合「l」がフラグとして表示されるようになっている。

**②の「rw-」⑤の「ken」という所有者**
2番目のカラムにはそのファイルの所有ユーザの権限が表示される。5番目のカラムである「ken」と対応している。
今回は「rw-」が表示されている。rは「読み込み可」で、wは「書き込み可」だ。基本的にファイルの所有者はデフォルトでそのファイルの読み込みがと書き込みが許可されることがほとんどだ。
 
**③の「r--」と⑥「users」というグループ**
3番目のカラムにはアクセス出来るグループに関してのフラグがセットされる。6番目の「users」というグループに対応している。
今回の場合「r--」読み込みのみが可能となっている。「users」というグループに参加しているユーザから読み込みが可能となっている。

**④の「r--」とその他のユーザ**
④は所有者でもなく、グループにも属さない、その他のユーザのアクセス権限を表している。
今回は「r--」となっている。とりあえずどのユーザも閲覧できるようになっている状態だ。所有者でもなくグループにも属さないユーザつまり「赤の他人」にファイルを閲覧させたくないならば、読み込み権限も剥奪するとよいだろう。
ここの部分に読み書きを許可している場合考えられるのはWebサービスでパブリックに公開してよいファイルなどだ。他人にみられたくないファイルは読み込み権限を剥奪しよう。

### 「ls -l」の結果の見方も一応

パーミッションを見るときに必ず使うため、「ls -l」全体の解説を一応しておこう。
`-rw-r--r-- 1 ken users 0 12月 22 16:28 myfile.txt`
となっているが、これに解説をするため仕切りをいれてみる
`-rw-r--r-- |1| ken users |0|12月 22 16:28| myfile.txt`

**1番目のカラムはパーミッション情報**
先程解説したパーミッションの基礎情報が表記される。所有者、グループ、その他のユーザに対してのアクセス権限が表記される。

**2番目のカラム、リンクされている数、サブディレクトリの数**
この数字は今回はファイルであり「1」となっている。この場合ハードリンクの数を示している。ディレクトリの場合ディレクトリ内のサブディレクトリ数となる。

**3番目のカラムは所有者やグループ情報**
ここには所有者やグループ情報が表記される。パーミッション情報と照し合せながら参照しよう。

**4番目はファイルサイズ**
今回は何もせず単に「touch」コマンドでファイルを作成したため「0」バイトとなっている。viなどで編集し保存すれば数値が変化するはずだ。

**5番目は日時**
一般的なタイムスタンプとなる。更新日時が表記されるようになっている。

**6番目はファイル名**
最後のカラムはファイル名となっている。


## スティッキービット（Sticky Bit）とは
- スティッキービット（Sticky Bit）とは、ディレクトリに設定される特殊なアクセス権の事です。
- スティッキービット（Sticky Bit）が設定されたディレクトリでは、すべてのユーザーがファイル・ディレクトリを書き込めますが、所有者だけ（rootは除く）しか削除できなくなります。
- /tmp ディレクトリは、スティッキービット（Sticky Bit）が設定されています。

一般的には全ユーザに書き込みを許可しながらも所有者以外には削除できない，という特徴のほうが重要だろう。この設定状況を見るには，「ls -al」と入力すればよい。パーミッション情報の最後に，「t」が表示されるものがスティッキービット設定である。

```
# ls -la
～略～
drwxrwxrwt　　9　root　　root　　　4096　Mar 14 13:54 tmp
～略～
```

　スティッキービットを設定するには，次のどちらかのように指定をする。パーミッション設定の頭に「1」，または「+t」を付加すればよい。

```
# chmod o+t filename
# chmod 1510 filename
```

　全ユーザーのファイル書き込みが必要なメールスプールディレクトリ（/var/spool/mail）などにも，このスティッキービットを設定することが多い。



## ファイルシステムの種類

ファイルシステムとは、ハードディスク等の記憶装置にあるデータをファイル名・更新日付などの属性データや、ファイルデータ自体を管理するための仕組みで、OSよって利用されるファイルシステムが異なります。
Linuxの場合は、ディストリビューションによって採用されるファイルシステムが異なりますが、ext3, ext4が採用される事が多いようです。

**Linuxで使われるファイルシステム(一部)**

| 名前       | 最大ファイルサイズ | 備考                                                                                                                                              |
| -------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| ext2     | 2TB       | Linuxオペレーティングシステムで広く利用されていたファイルシステムである。初期のextファイルシステムを拡張したもの。                                                                                   |
| ext3     | 16GB～2TB  | ext2にジャーナリングシステム機能が追加されたもの。Linuxで主流のファイルシステム。<br>認識できる日付範囲が1901年12月14日から2038年1月18日でそろそろやばそう。                                                    |
| ext4     | 16TB      | 最大1EBまでのボリュームサイズと、最大16TBまでのファイルサイズをサポートする。<br>日付範囲が、1901年12月14日から2514年4月25日となり、生きている間は使える。<br>タイムスタンプがナノ秒をサポート。おそらく今後の主流ファイルシステム。ext3よりレスポンス良し。 |
| ReiserFS | 16TB      | 小さなファイルの扱いに向いたジャーナリングファイルシステム。使っているのかな？SUSEで採用されていたとの事。                                                                                         |

別参考サイト：https://users.miraclelinux.com/technet/document/linux/training/1_3_3.html


## mkfsコマンド

ファイルシステムを作るには、「mkfs」コマンドを使います。

```mkfs [オプション] デバイス名（パーティション）```


- 有用なオプション


| オプション | 意味                                     |
| ----- | -------------------------------------- |
| -t    | ファイルシステムのタイプを指定。指定しなかった場合は、ext2が用いられる。 |
| -c    | ファイルシステムを作成する前に、デバイスに対して不良ブロックの検査を行う。  |

実際にファイルシステムを作成してみます。


```
# mkfs -t ext4 /dev/sdb1 
↑　ファイルシステムはext4。/dev/sdb1パーティションをフォーマット
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
66384 inodes, 265064 blocks
13253 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=272629760
9 block groups
32768 blocks per group, 32768 fragments per group
7376 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 21 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
```


## memoコマンド

mkfsコマンドはただのフロントエンドのプログラムです。 実際には以下のコマンド（mkfs.ext2、mkfs.ext3、mkfs.ext4）が実行されています。 直接これらのコマンドを使ってもファイルシステムを作成することができます。

```
# ls -l /sbin/mkfs*
-rwxr-xr-x. 1 root root  7416  4月 29 16:41 2013 /sbin/mkfs
-rwxr-xr-x. 1 root root 22476  4月 29 16:41 2013 /sbin/mkfs.cramfs
-rwxr-xr-x. 5 root root 61072  6月 25 17:49 2013 /sbin/mkfs.ext2　← ext2用mkfs
-rwxr-xr-x. 5 root root 61072  6月 25 17:49 2013 /sbin/mkfs.ext3　← ext3用mkfs
-rwxr-xr-x. 5 root root 61072  6月 25 17:49 2013 /sbin/mkfs.ext4　← ext4用mkfs
-rwxr-xr-x. 5 root root 61072  6月 25 17:49 2013 /sbin/mkfs.ext4dev
lrwxrwxrwx. 1 root root     7  8月  3 16:02 2013 /sbin/mkfs.msdos -> mkdosfs
lrwxrwxrwx. 1 root root     7  8月  3 16:02 2013 /sbin/mkfs.vfat -> mkdosfs
```

使い方も簡単で、コマンドの後ろへパーティションを指定するだけです。

```
# mkfs.ext4 /dev/sdb1　← パーティションのデバイス名を指定するだけ
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
66384 inodes, 265064 blocks
13253 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=272629760
9 block groups
32768 blocks per group, 32768 fragments per group
7376 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
```

## Linuxのシグナルとは何か？

　「シグナル」はプロセスとプロセスの間で通信を行う際に使用される“信号”のことで、シグナルを受け取ったプロセスは“何らかの動作”を行います。その動作は、例えば「再起動」であったり、「終了」であったりします。
　［CTRL］＋［C］は「SIGINT」というシグナルを行うキー操作、［CTRL］＋［Z］は「SIGTSTP」というシグナルを行うキー操作です。

### シグナルの種類
　シグナルには多くの種類があり、名前と数値による値が決まっています。例えば、「1」は「SIGHUP（ハングアップ、制御している端末の終了）」、「2」は「SIGINT（インタラプト、キーボードからの割り込み）」です。主なシグナルは以下の通りです。

| 名前       | 番号 | 動作（※）  | 意味                                          |
| -------- | -- | ------ | ------------------------------------------- |
| SIGHUP   | 1  | Term   | 制御端末の切断（ハングアップ）、仮想端末の終了                     |
| SIGINT   | 2  | Term   | キーボードからの割り込みシグナル（通常は［CTRL］＋［C］）             |
| SIGQUIT  | 3  | Core   | キーボードによる中止シグナル（通常は［CTRL］＋［\］）               |
| SIGFPE   | 8  | Core   | 不正な浮動小数点演算（ゼロ除算やオーバーフローなど）の発生               |
| SIGKILL  | 9  | Term   | 強制終了シグナル（KILLシグナル）                          |
| SIGSEGV  | 11 | Core   | 不正なメモリ参照の発生                                 |
| SIGPIPE  | 13 | Term   | 読み手のいないパイプへの書き込み<br>（通常はこのシグナルを受け取ると即時終了する） |
| SIGALRM  | 14 | Term   | タイマー（Alarm）による終了                            |
| SIGTERM  | 15 | Term   | 終了シグナル（「kill」コマンドのデフォルトシグナル）                |
| SIGCHLD  | 17 | Ignore | 子プロセスの状態（終了、停止または再開）が変わった                   |
| SIGCONT  | 18 | Cont   | 一時停止しているジョブへの再開シグナル                         |
| SIGSTOP  | 19 | Stop   | 一時停止シグナル                                    |
| SIGTSTP  | 20 | Stop   | 端末からの一時停止シグナル（通常は［CTRL］＋［Z］）                |
| SIGTTIN  | 21 | Stop   | バックグラウンドジョブ／プロセスのキーボード入力待ち                  |
| SIGTTOU  | 22 | Stop   | バックグラウンドジョブ／プロセスの端末出力待ち                     |
| SIGXCPU  | 24 | Core   | CPU時間制限を越えた                                 |
| SIGXFSZ  | 25 | Core   | ファイルサイズ制限を越えた                               |
| SIGWINCH | 28 | Ignore | ウィンドウのサイズが変更された                             |
|          |    |        |                                             |


（※）「動作」はシグナルを受け取った際の動作で、デフォルトは以下の通りです。実際にどのような動作になるかは、コマンドによって異なります。

| Term   | プロセスの終了           |
| ------ | ----------------- |
| Ignore | 無視                |
| Core   | プロセスの終了とコアダンプ出力   |
| Stop   | プロセスの一時停止         |
| Cont   | プロセスが停止中の場合は実行の再開 |
|        |                   |

　この他、どのようなシグナルがあるかは「man 7 signal」コマンドで確認できます。また、「man bash」コマンドで「sig」や「シグナル」を検索すると、bashでの動作を調べることができます。


# LPIC level1の典型問題 20選

**LPIC level1 問題１**
「pwd」コマンドを実行した後、「ls -l」コマンドを実行したい。適切なものを１つ選択しなさい。
A. pwd || ls -l
B. pwd ; ls -l
C. pwd > ls -l
D. pwd < ls -l
E. pwd >> ls -l

<details>
<summary>正解</summary>
正解：B
コマンドを続けて実行する場合には「;」を使用する。「&&」は一つ目のコマンドが正常に動作したときのみ二つ目を実行する。「||」は一つ目のコマンドが正常に動作しなかったときのみ二つ目を実行する。
</details>

**LPIC level1 問題2**
シェル変数の一覧を表示するには、どのコマンドラインを実行すれば良いか？　1つ選択しなさい。
A. date
B. export
C. env
D. set


<details>
<summary>正解</summary>
正解：D
dateは日時の設定や時刻を取得ができるコマンドだ。exportは環境変数を定義・リスト表示するコマンド。envは環境変数を表示するコマンドになっている。シェル変数を表示するにはDのsetコマンドを使う。
どのコマンドもよく出題される。
</details>

**LPIC level1 問題3**
60日以上更新されていないファイルを削除したい。次のコマンドの空欄に当てはまるコマンドは何か？
$ find . -mtime +60 -type f | ___________ rm


<details>
<summary>正解</summary>
正解：xargs
xargsは標準入力から受け取ったデータを引数としてコマンドを実行するためのコマンドだ。
findコマンドでファイルを探し、それを削除rmしている
$find . -mtime +60 -type f | xargs rm
xargsは記述で出題されることも多い。書けるようになっておこう。
</details>

**LPIC level1 問題4**
config.confファイルでは、行頭に#がある行はコメントとして書かれている。このファイルのコメントの行数をカウントする際、正しいのはどれか？
A. grep ^# config.conf | wc -l
B. grep $# config.conf | wc -l
C. grep ^# config.conf | wc -c
D. grep $# config.conf | wc -c


<details>
<summary>正解</summary>
正解：A
正規表現で行頭は「^」となる。「$」は行末だ。
wc(word count)コマンドは行や文字数をカウントするコマンドである。「-l」のオプションで行数を、「-c」のオプションでバイト数を数える。この問題では行数なので、Aが正解となる。
</details>

**LPIC level1 問題5**
バイナリファイルの内容を8進数で表示するコマンドを2つ選択しなさい。
A. expand
B. nl
C. lpr
D. hexdump
E. cat
F. od
G. iconv


<details>
<summary>正解</summary>
正解：D,F
expandはタブをスペースに変換して出力する。
nlは行番号を付けての出力する。
lprは印刷に用いるコマンド。
catはファイルをそのまま標準出力。
iconvは文字コードの変換を行うコマンドだ。
正解はod、hexdumpの２つとなる。
</details>

**LPIC level1 問題6**
viのコマンドモードの操作において、カーソルの位置から5行をコピーする操作して適切なものはどれか？
A. :repeat 5
B. :r 5
C. ¥copy
D. 5yy
E. 5dd


<details>
<summary>正解</summary>
正解：D
yyはコピーのコマンドだが、数字を前につけることで○行コピーするの意味合いになる。
ddは行をデリートするコマンドだ。:rは現在の行の次の行にファイルを読み込み、挿入するコマンドになる。
他のコマンドは存在しない。
</details>

**LPIC level1 問題7**
シグナルの指定なしでkillコマンドを実行したところ、プロセスが終了しなかった。どうしても終了させたいときシグナルの指定として適切なものをすべて選択しなさい。
A. -SIGHUP
B. -9
C. -15
D. - SIGCONT
E. -KILL


<details>
<summary>正解</summary>
正解：B、E
強制終了には-KILLシグナルを発生させる必要がある。LPIC level1でシグナルはよく出る問題だ。すべての番号とシグナル名を覚えておこう。
</details>

**LPIC level1 問題8**
バックグラウンドでupdatedbコマンドを実行させる方法として適切なものを１つ選択しなさい。
A. jobs updatedb
B. updatedb #
C. fg updatedb
D. bg updatedb
E. updatedb &


<details>
<summary>正解</summary>
正解：E
最後に「&」をつけるとバックグラウンドで実行を行う。
jobsコマンドは現在のジョブ状況を確認するコマンドだ。
fgとbgはそれぞれジョブをフォアグランド、バックグラウンドに移すコマンドである。「bg % ジョブ番号」というように使用する。
</details>

**LPIC level1 問題9**
fileAのパーミションを次のように設定したい。
所有者： 読み取り可能、書き込み可能、実行可能
所有グループ：読み取り可能
その他：読み取り可能
下線部に当てはまる数値を記述しなさい。
```$ chmod _______ fileA```


<details>
<summary>正解</summary>
正解：744
所有者： 読み取り可能、書き込み可能、実行可能
所有グループ：読み取り可能
その他：読み取り可能
読み取り権限は 100 → 4
書き込み権限は 010 → 2
実行権限は 001 → 1
だ。
所有者は 4+2+1 = 7
所有グループとその他は 4
となり、744となる。
</details>

**LPIC level1 問題10**
/etc/passwdファイルのパーミションで適切なものはどれか？　１つ選択しなさい。
A. -rw-r--r-- root root /etc/passwd
B. -rw-rw-r-- root root /etc/passwd
C. -rw-rw-rw- root root /etc/passwd
D. -rwxrw-rw- root root /etc/passwd


<details>
<summary>正解</summary>
正解：A
/etc/passwdにはユーザ情報が保存されている。ユーザ管理はrootユーザしか行えない。ただし、他のユーザーでも閲覧は行うことができる。
そのため、Aの「-rw-r--r--」が正解だ。
</details>

**LPIC level1 問題11**
ディレクトリ/tmpにスティッキービットを設定したい。実行すべきコマンドとして適切なものを１つ選択しなさい。
A. chmod r+w /tmp
B. chmod o-s /tmp
C. chmod o+s /tmp
D. chmod o+t /tmp
E. chmod o+S /tmp


<details>
<summary>正解</summary>
正解：D
ファイルの所有者のみが、ファイルを削除できるようにしたい場合使うのがスティッキービットだ。例えば/tmpフォルダはすべてのユーザによって利用されるが、他のユーザには削除されないようにしたい。そのため/tmpにはスティッキービットが設定されている。
スティッキービットは、その他ユーザに「t」を加えれば設定できる。正解は「D. chmod o+t /tmp」となる。
</details>

**LPIC level1 問題12**
空き容量が足りなくなり、この中にあるディレクトリ以下を別ファイルシステムに移すことになった。新しく移したディレクトリを移す前と同じパス名でアクセスするためにはどの方法が適切か？　１つ選択しなさい。
A. ハードリンクを使用する
B. シンボリックリンクを使用する
C. デバイススペシャルファイルを使用する
D. ソケットを使用する


<details>
<summary>正解</summary>
正解：B
ハードリンクは別のファイルシステム間では利用できない。
シンボリックリンクはファイルシステムが別でも利用ができる。正解は「B. シンボリックリンクを使用する」となる。
</details>


**LPIC level1 問題13**
搭載メモリが4GBの場合、スワップ領域には何GB程度割り当てるべきか？　１つ選択しなさい。
A. 100MB
B. 4GB
C. 100GB
D. 400GB


<details>
<summary>正解</summary>
正解：B
スワップ領域は搭載メモリの１〜２倍用意するのが適切だ。正解はBとなる。
LPIC level1でよく出る問題だ。しっかりと理解しておこう。
</details>


**LPIC level1 問題14**
mkfsコマンドのtypeを指定しなかったとき、作成されるファイルシステムの種類はどれか？　１つ選択しなさい。
A. xfs
B. fdisk
C. ext2
D. ext3
E. ext4


<details>
<summary>正解</summary>
正解：C
mkfsコマンドの実行時に-tオプションでファイルシステムの種類を選択できる。デフォルトだとext2ファイルシステムが選択される。
選択肢の中で、fdiskはコマンドのみ、ファイルシステムではない。
</details>


**LPIC level1 問題15**
独立したパーティションにすべきディレクトリとして正しくないものはどれか？　１つ選択しなさい。
A. /home
B. /etc
C. /var
D. /opt
E. /tmp


<details>
<summary>正解</summary>
正解：B
/home：ユーザのホームディレクトリ。容量が大きくなりやすい。
/etc：設定ファイル が置かれる
/var：システムログなどの動的に変化するファイルが置かれる。
/opt：追加でインストールしたパッケージを配置するため、容量が大きくなる場合がある。
/tmp：誰でも読み書き可能なため、危険性を考慮すべき
よって、正解はBとなる。他は容量やセキュリティの問題で独立させるべきだ。
</details>


**LPIC level1 問題16**
カーネルモジュールをロードするコマンドを記述しなさい。


<details>
<summary>正解</summary>
正解：modprobe
カーネルモジュールをロードするにはmodprobeコマンドを使う。
</details>


**LPIC level1 問題17**
rpmコマンドでパッケージに含まれるファイル名をリスト表示するオプションとして適切なものはどれか？　１つ選択しなさい。
A. -qf
B. -ql
C. -qi
D. -qa


<details>
<summary>正解</summary>
正解：B
rpmのオプションはよく出題される。
-fは指定したファイルを含むrpmパッケージを表示
-lは指定したパケージに含まれるすべてのファイルを表示
-iは指定したパッケージの詳細情報を表示
-aはインストール済みのrpmパッケージ情報を一覧で表示
</details>


**LPIC level1 問題18**
apt-getコマンドを使用して、debian_pkgパッケージをインストールするためのコマンドラインとして、下線部に入るサブコマンドを記述してください。
```$ apt-get _____________ debian_pkg```


<details>
<summary>正解</summary>
正解：install
「apt-get install」でパッケージをインストールできる。
apt-getコマンドの代表的なオプションはすべて覚えよう。
</details>


**LPIC level1 問題19**
Linux起動時にカーネルが出力するメッセージを、起動後確認したい。適切なコマンドはどれか？
A. lsmod
B. aptitude
C. dmesg
D. cat /var/log/boot
E. cat /boot/grub/grub.boot
F. cat /etc/init.d/httpd


<details>
<summary>正解</summary>
正解：C
dmesgで起動メッセージを確認できる。
lsmodはLinuxカーネルのモジュールリストを表示するコマンドだ。
aptitudeはDebian系パッケージの操作や管理を行う。
</details>


**LPIC level1 問題20**
起動時のデフォルトランレベルを設定しておくファイルのファイル名を絶対パスで記述しなさい。


<details>
<summary>正解</summary>
正解：/etc/inittab
デフォルトのランレベルは/etc/inittabの中でinitdefaultとして指定する。
これに限らず、頻出ディレクトリは絶対パスで覚え、中身も覚えられるようなら覚えてしまおう。LPIC level1では、意外なほど深く聞かれることも多い。
</details>

# 参考
https://eng-entrance.com/lpic_questions#i

https://eng-entrance.com/linux-permission-basic