fstab の各フィールドの解説
/dev/sdb1 /mnt/guest-data-01 ext4 defaults,noatime,users,nodev,nosuid,uid=1001,gid=1001 0 2| フィールド | 例 | 説明 |
|---|---|---|
| デバイス情報 | /dev/sdb1 | HDD のパーティション情報(どのデバイスをマウントするか) |
| マウントポイント | /mnt/xxx-01 | マウント先のディレクトリ |
| ファイルシステム | ext4 | 使用するファイルシステムの種類 |
| マウントオプション | defaults,noatime,users,nodev,nosuid,uid=1001,gid=1001 | マウント時のオプション |
| ダンプフラグ | 0 | dump コマンドによるバックアップをするか(通常 0) |
| ファイルシステムチェック順序 | 2 | fsck の実行順序(1 はルートパーティション、2 はその他、0 はスキップ) |
/dev/sdb1 の意味
/dev/: デバイスファイルを管理するディレクトリ
sdb: 2 番目の物理ストレージデバイス(通常 1 番目は sda)
1: sdb の第 1 パーティション
HDD のパーティション情報を確認する方法
lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 100G 0 part /
├─sda2 8:2 0 200G 0 part /home
└─sda3 8:3 0 200G 0 part [SWAP]
sdb 8:16 0 1000G 0 disk
└─sdb1 8:17 0 1000G 0 part /mnt/xxx-01sudo fdisk -lDisk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 121601 976761600 83 Linuxuid=1001, gid=1001 の設定について
パーティションのファイルやディレクトリの所有者を UID=1001 のユーザー、GID=1001 のグループに強制的に設定するオプション
/dev/sdb1 /mnt/mydata ext4 defaults,noatime,users,uid=1001,gid=1001 0 2通常、ext4 はファイルシステム自体がファイルの所有権を管理している
ext4 などの Linux ネイティブファイルシステムでは uid / gid を明示的に設定する必要はない
sudo useradd -u 1001 myuser
sudo mkdir /mnt/mydata
sudo chown myuser:myuser /mnt/mydatanodev (デバイスファイル作成不可)について
nodev を設定すると、そのパーティション内で特殊デバイスファイル(
/dev/*など)の作成や使用が制限される
mknod コマンドを使ってデバイスファイルを作成できるが、nodev を適用したディレクトリでは無効になる
sudo mknod /mnt/data/mydevice b 1 5 # ブロックデバイス(例: /dev/xxx)
sudo mknod /mnt/data/mypipe p # 名前付きパイプls -l /mnt/data/brw-r--r-- 1 root root 1, 5 Mar 17 12:00 mydevice
prw-r--r-- 1 root root Mar 17 12:00 mypipe/dev/sdb1 /mnt/data ext4 defaults,nodev,noexec,nosuid 0 2sudo mknod /mnt/data/mydevice b 1 5mknod: '/mnt/data/mydevice': Operation not permittednodev を設定する理由
- 通常、ユーザーが直接
/dev/*内のデバイスファイルを利用するため、別のマウントポイントでデバイスファイルを作成する必要はない - nodev を設定することで、マルウェアなどが偽の
/dev/nullや/dev/xxxを作成して悪用するのを防ぐ - ユーザーが特権デバイス(ブロックデバイス、キャラクターデバイス)を作成してシステムに影響を与えるのを防ぐ
nosuid (SUID を持つ実行ファイルが特権実行されない)について
nosuid を設定すると、そのパーティション内の SUID / SGID(Set-User-ID / Set-Group-ID)付きの実行ファイルが特権昇格しなくなる
SUID / SGID とは?
SUID(Set-User-ID)
ファイルの所有者の権限で実行できるようにするフラグ
SGID(Set-Group-ID)
ファイルのグループの権限で実行できるようにするフラグ
sudo chmod u+s /mnt/data/suid-test
ls -l /mnt/data/suid-test-rwsr-xr-x 1 root root 12345 Mar 17 12:00 suid-testSUID ビットが設定された
suid-testというプログラムが/mnt/dataにある場合、通常なら root 権限で動作
./suid-test/mnt/data が nosuid 付きでマウントされている場合
/dev/sdb1 /mnt/data ext4 defaults,nodev,noexec,nosuid 0 2この状態で
suid-testを実行すると、SUID が無効化され、通常ユーザー権限で動作
./suid-testOperation not permittedconst add = (a, b) => a + b
add(2, 3) // 5nosuid を設定する理由
- 悪意ある SUID ファイルの実行を防ぐ(バックドアの防止)
- NFS や外部ストレージ経由で root 権限を奪う攻撃の防止
- Web サーバーの公開ディレクトリ
/var/wwwなどでの特権昇格リスクを回避