101-4. デバイス、Linuxファイルシステム階層標準
- パーティションとファイルの作成
- ファイルのシステムの整合性を保持する
- ファイルのマウントとアンマウントをコメントロールする
- ディスククォータを管理する
- ハードリミット、ソフトリミットがある
- 「quota」コマンドでユーザごとのディスク使用量とクォータの状況を確認できる
- ファイルのパーミッションと所有者を管理する
- 「chmod,chgrp」コマンドで権限が変更できる
- 「chown」コマンドで所有者が変更できる
- 「umask」コマンドでumask値の確認や変更が出来る
- ハードリンクとシンボリックリンクを作成・変更する
- 「ln」コマンドでハードリンクを作成できる(オプションに-sをつけるとシンボリックリンク)
- システムファイルを見つける、適切な位置にファイルを配置する
- 「find」コマンドでファイルを検索できる
note
- 4章:5,6
- 5章:1,2,3,4,7
- ハードディスクを利用するための5ステップ
- デバイスファイルとは、HDなどの デバイスの入出力を行う特殊ファイル
- ファイルシステムとは、ディスクに保存されるデータをファイルとして管理する仕組み
1. パーティションとファイルの作成
パーティション
- パーティションとは、ハードディスク内の分割された領域
- パーティションは、「基本パーティション」と「拡張パーティション」の2種類がある
- MBRは、パーティションの管理情報やハード・ディスク内に格納されたOSを呼び出すためのソフトウエアなどが記述された場所
- 「fdisk」コマンドでパーティションを操作できる
fdisk [-l] デバイス名
実行モードコマンド | 説明 |
---|---|
l | パーティションタイプを一覧表示 |
n | パーティションを作成 |
d | パーティションを削除 |
p | パーティショテーブルを表示 |
w | パーティションテーブルを保存して終了 |
q | パーティションテーブルを保存しないで終了 |
m | ヘルプメニューを表示 |
ハードディスク
デバイスファイル
- デバイスファイルとは、ハードディスクやCD-ROM、シリアルポートといったデバイスの入出力を行う特殊ファイル
- デバイスに関連付けられたファイルを利用しファイルと同じようにアクセス(入力や出力)出来るようにする
- ドライブという概念ではなく、/ディレクトリ以下にマウントして利用する
分類 | デバイスファイル | 説明 |
---|---|---|
ハードディスク(IDE) | /dev/hda | プライマリーマスター |
/dev/hdb | プライマリスレーブ | |
/dev/hdc | セカンダリーマスター | |
/dev/hdd | セカンダリースレーブ | |
ハードディスク(SCSI/SATA/USB) | /dev/sda | 1番目 |
/dev/sdb | 2番目 | |
/dev/sdc | 3番目 | |
/dev/sdd | 4番目 | |
ドライブ | /dev/sr0 | CD/DVD |
/dev/st0 | テープ |
ルートファイルシステム
- システムの起動に必要なファイルや、システムが異常をきたした場合に、それを修復するための各種ツールやユーティリティが格納されている
- ルートファイルシステムには「/bin,/sbin」「/etc」「/lib」「/dev」が必要
- 「/bin,/sbin」:システムに必要なコマンド
- 「/etc」:各種設定
- 「/lib」:ライブラリ
- 「/dev」:デバイスファイル
ファイルシステム
- パーティションを作成しただけでは、まだファイルを保存することはできない
- ファイルシステムは次の3つに分類できる
- ディスクファイルシステム(デフォルトは「ext2」)
- 分散ファイルシステム(ファイル共有のためのプロトコルを備えている)
- 特殊用途ファイルシステム
- 「mkfs」コマンドで、パーティション上にファイルシステムを作成できる(mkfs -t ext4 /dev/sdb1)
mkfs [-t ファイルシステムタイプ] [オプション] デバイス名
分類 | ファイルシステム | mkfsコマンドンド | 備考 |
---|---|---|---|
ディスクファイルシステム | ext2 | mkfs -t ext2 | Linuxオペレーティングシステムで広く利用されていたファイルシステムである初期のextファイルシステムを拡張して作られた |
ディスクファイルシステム | ext3 | mkfs -t ext3 | ext2と互換性が高くジャーナリングやディレクトリインデックス等の機能が加わった |
ディスクファイルシステム | ext4 | mkfs -t ext4 | ext3の後継のファイルシステムで、拡張機能を使っていない場合に限りext3としてマウントできる |
分散ファイルシステム | ReiserFS | mkfs -t reisefs | ファイル検索が高速 |
分散ファイルシステム | XFS | mkfs -f xfs | 堅固で高速なジャーナリングシステム |
2. ファイルのシステムの整合性を保持する
- 利用状況や容量を次のコマンドで確認出来る
- df:ファイルシステムごとのディスクの利用状況
- du:ディレクトリ内のディスクの占める容量
- ls -l:論理的なバイト数(「du」はブロック数に対応したバイト数)
- 「fsck」コマンドでディスクのチェックや修復ができる
- 「tune2fs」コマンドでext2/ext3/ext4ファイルシステムのパラメータを調整できる(「tune2fs -c 10 /dev/sda2」で「/dev/sda2」がマウント出来る回数を 10回に変更)
du [オプション] [デバイス名/ディレクトリ名]
オプション | 説明 |
---|---|
-a | ディレクトリ以外にファイルについても表示 |
-l | リンクも含めて集計 |
-c | すべての容量の合計を表示 |
-s | 指定したディレクトリのみの合計を表示 |
-S | サブディレクトリを含めず集計 |
fschk [オプション] デバイス名
オプション | 説明 |
---|---|
-t ファイルシステム名 | ファイルシステムの種類を指定 |
-a | 自動的に修復を実行 |
-r | 対話的に修復を実行 |
-A | /etc/fstabに記述されている全ファイルシステムに対して実行 |
-N | 実際には実行せず何が行われるかのみ表示 |
tune2fs [オプション] デバイス名
オプション | 説明 |
---|---|
-c 回数 | チェックなしでマウントできる最大回数を指定 |
-i 時間 | ファイルシステムをチェックする差一台の時間間隔を指定 |
-j | ext2ファイルシステムをext3ファイルシステムに変換 |
-L | ファイルシステムのボリュームラベルを設定 |
[vagrant@localhost ~]$ df -h # ファイルシステムの利用状況 Filesystem Size Used Avail Use% マウント位置 /dev/mapper/VolGroup-lv_root 8.6G 1.5G 6.7G 18% / tmpfs 186M 0 186M 0% /dev/shm /dev/sda1 485M 50M 410M 11% /boot vagrant 113G 89G 24G 79% /vagrant [vagrant@localhost ~]$ [vagrant@localhost ~]$ du -h /var/www/html/ # 指定したディレクトリの容量 8.0K /var/www/html/ [vagrant@localhost ~]$
3. ファイルのマウントとアンマウントをコメントロールする
- マウントとは、あるファイルシステムに別のファイルシステムを組み込んで全体として1つのファイルシステムとして扱えるようにすること
- マウントした後は、デバイスやネットワークの違いを意識せずにファイルにアクセスできる
- 「/etc/fstab」ファイルにファイルシステムの情報が記述されている
- 「mount」コマンドでファイルシステムをマウントができる
- 「mount -a」で「/etc/fstab」に記述されている全てのファイルをシステムにマウント
- 「mount」のみで実行すると現在のマウント状況が表示される
- 「umount」コマンドでファイルシステムをマウント解除ができる
/etc/fstabファイルの書式) /dev/sda /boot ex3 defaults 1 2 ① ② ③ ④ ⑤ ⑥ ①デバイス名 ②マウントポイント(マウント先のディレクトリ) ③ファイルシステムの種類(ext2,ext3等) ④マウントオプション(デフォルト設定(async,auto,dev,exec,nouser,rw,suid)、個別にも設定可能) ⑤dumpフラグ(1であればバックアップ対象、通常ext2とext3以外は0) ⑥ブート時にfsckがチェックする順序(0はチェック対象外、昇順でチェック、ルートファイルシステムは1である必要がある)
マウントオプション | 説明 |
---|---|
async | 非同期入力を設定 |
auto | -aオプションでmountコマンドを実行した時にマウントする |
noauto | -aオプションでmountコマンドを実行した時にマウントしない |
defaults | デフォルト設定(async,auto,dev,exec,nouser,rw,suid) |
exec | バイナリ実行を許可 |
noexec | バイナリ実行を許可しない |
ro | 読み出し専用でマウント |
rw | 読み書きでマウント |
unhide | 隠しファイルも表示 |
suid | SUIDとSGIDを有効 |
user | 一般ユーザーでもマウント可能にする |
users | マウントしたユーザー以外のユーザーもアンマウント可能にする |
nouser | 一般ユーザーのマウントを許可しないようにする |
4. ディスククォータを管理する
- ディスククォータとは、ユーザーあるいは、グループごとにディスク容量を制限する事のできる仕組みのこと
- クォータは次のパラメータを制限できる
- ユーザーごとのハードリミット:上限で書込みができなくなる
- ユーザーごとのソフトリミット:上限で警告、一定期間で書込みができなくなる
- グループごとにも、ハードリミット・ソフトリミットがある
- 猶予期間:ソフトリミットの猶予期間
- 「quota」コマンドでディスクの使用量とクォータの状況を確認できる(「quota -uv lpic」でlpicユーザのクォータ情報を表示)
- オプションに「-u」をつけるとユーザクォータの状態を表示(省略可)、「-g」でグループクォータを表示
- 「quotaon」コマンドでディスククォータ有効、 「quotaoff」で無効
- 「repquota」でディスク使用状況とクォータ状況を表示(「quota」コマンドはユーザ、グループ毎のクォータ状況の確認。「repquota」コマンドはファイルシステム(全ユーザ等)のクォータ状況の確認。)(「repquota -a」で「/etc/fstab」に従ってクォータ情報を表示)
- 「edquota」コマンドでディスク容量を設定
quota [-u] [オプション] [ユーザ名]
quota -g [オプション] グループ名
オプション | 説明 |
---|---|
-u | ユーザクォータの状況を表示 |
-g | グループクォータの状況を表示 |
-v | 詳細な情報を表示 |
クォータの適用手順
- 「/etc/fstab」ファイルにマウントオプションの指定に「usrqouta」を追加する
- 対象のディレクトリをマウントし直す
- 対象のディレクトリ直下に「aquota.user」ファイルを作成しアクセス権(600)を設定する
「quotacheck」コマンドでデータベースを初期化する([quotacheck ディレクトリ名])
- 「quotacheck」コマンドは、ファイルシステムを調べディスク使用量をチェックする。「aquota.user」「aquota.group」に保存される。
「qauotaon」コマンドでクォータを有効にする([qauotaon ディレクトリ名])
「edquota」コマンドでユーザーごとのクォータを設定する([edquota ユーザー名])(viエディタが起動する)
- 「repquota」コマンドで確認する([repquota ディレクトリ名])
- 「-a」オプションを指定して実行すると「/etc/fstab」ファイルの全てのクォータ状況が表示される
5. ファイルのパーミッションと所有者を管理する
- 「chmod,chgrp」コマンドで権限が変更できる
- 「chown」コマンドで所有者が変更できる
- ファイルやディレクトリを作成時には、デフォルトのアクセス権限(umask値)が設定されている
- 「umask」コマンドでumask値の確認や変更が出来る
- ファイルは666、ディレクトリは777からumask値を引いた値がデフォルトのアクセセス権(umask値が022の場合、ファイルは644、ディレクトリは755になる)
パーミッション(アクセス権)の例) d rwx r-x r-- ① ② ③ ④ ①ファイルの種類(「d」はディレクトリ、「-」は通常のファイル、「l」はリンク) ②所有者(u)の権限 ③グループ(g)の権限 ④その他(o)の権限
chmod [オプション] アクセス権 ファイル名
SUID、SGID、スティッキービット
- SUID(Set User ID)とは、実行権を持っているユーザが実行した場合、ファイルの所有者が実行したことになる
- 所有者の実行権が「s」となっている(rwsr-xr--)
- 権限の数値は「4000」が加えられる(uの項目だから4?)
- 「passwd」コマンドで、「/etc/passwd(rw-r--r--)」ファイルを変更できるのはSUIDがコマンドについているから
- 「chmod u+s ファイル名」でSUIDがつけられる
- SGID(Set Group ID)とは、SUIDと同じでグループの所有者が実行したことになる
- グループの実行権が「s」となっている(rwxr-sr--)
- 権限の数値は「2000」が加えられる(gの項目だから2?)
- 「chmod g+s ファイル名」でSGIDがつけられる
- スティッキービットとは、そのユーザに書き込み権があっても削除することが出来ないように制御できる
- その他の実行権が「t」となっている(rwxrwxrwt)
- 権限の数値は「1000」が加えられる(oの項目だから1?)
- 「/tmp(drwxrwxrwt)」は自分以外のユーザが所有するファイルは書き込めても削除は出来ない
- 「chmod o+t ファイル名(ディレクトリ名)」
6. ハードリンクとシンボリックリンクを作成・変更する
ln [オプション] リンク元(実体) リンクファイル
7. システムファイルを見つける、適切な位置にファイルを配置する
- 「find」コマンドでファイルを検索できる
- 「locate,updatedb」コマンドでも検索できる(updatedbはファイルやパス等をDBに保存し検索する)
- 「which」コマンドは、コマンドの絶対パスを表示する
- 「whereis」コマンドは、バイナリファイルやソースコードマニュアルの配置場所を表示する
- 「type」コマンドは、コマンドが実行ファイルなのか、シェルの組み込みコマンドなのか、エイリアスなのか等コマンドの情報を表示する
find [検索ディレクトリ] [検索式]
検索式 | 説明 |
---|---|
-name ファイル名 | ファイル名で検索 |
-atime 日時 | 採集アクセス時刻で検索 |
-mtime 日時 | 最終更新時刻で検索 |
-perm アクセス権 | アクセス権で検索 |
-size サイズ | ファイルサイズで検索 |
-type ファイルの種類 | ファイルの種類で検索(f:ファイル、l:シンボリックリンク、d:ディレクトリ) |
-user ユーザ名 | ファイルの所有者で検索 |