amarron2’s blog

linuxや資格関係の記事を書きます。基本自分用のメモです。

101-4. デバイス、Linuxファイルシステム階層標準

  1. パーティションとファイルの作成
  2. ファイルのシステムの整合性を保持する
    • 「df,du」コマンドで利用状況や容量を確認できる
    • fsck」コマンドでディスクのチェックや修復ができる
    • 「tune2fs」コマンドでext2/ext3/ext4ファイルシステムのパラメータを調整できる
  3. ファイルのマウントとアンマウントをコメントロールする
    • 「mount」コマンドでファイルシステムをマウントができる
    • 「umount」コマンドでファイルシステムをマウント解除ができる
    • SUID(u+s)、SGID(g+s)で実行権限を所有者またはグループ者が実行したことにできる
    • スティッキービット(o+t)で所有者以外は削除できなくできる
  4. ディスククォータを管理する
    • ハードリミット、ソフトリミットがある
    • 「quota」コマンドでユーザごとのディスク使用量とクォータの状況を確認できる
  5. ファイルのパーミッションと所有者を管理する
    • 「chmod,chgrp」コマンドで権限が変更できる
    • 「chown」コマンドで所有者が変更できる
    • 「umask」コマンドでumask値の確認や変更が出来る
  6. ハードリンクとシンボリックリンクを作成・変更する
  7. システムファイルを見つける、適切な位置にファイルを配置する
    • 「find」コマンドでファイルを検索できる

note

f:id:Amarron:20150816114455p:plain

1. パーティションとファイルの作成

パーティション

f:id:Amarron:20150714075140p:plain

fdisk [-l] デバイス名
実行モードコマンド 説明
l パーティションタイプを一覧表示
n パーティションを作成
d パーティションを削除
p パーティショテーブルを表示
w パーティションテーブルを保存して終了
q パーティションテーブルを保存しないで終了
m ヘルプメニューを表示

ハードディスク

  • 様々な接続形態があり、現在では「SATA」がPC標準になっている

f:id:Amarron:20150726122715j:plain

デバイスファイル

  • デバイスファイルとは、ハードディスクや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」:デバイスファイル

f:id:Amarron:20150714075316p:plain

ファイルシステム

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 詳細な情報を表示

クォータの適用手順

  1. 「/etc/fstab」ファイルにマウントオプションの指定に「usrqouta」を追加する
  2. 対象のディレクトリをマウントし直す
  3. 対象のディレクトリ直下に「aquota.user」ファイルを作成しアクセス権(600)を設定する
  4. 「quotacheck」コマンドでデータベースを初期化する([quotacheck ディレクトリ名])

    • 「quotacheck」コマンドは、ファイルシステムを調べディスク使用量をチェックする。「aquota.user」「aquota.group」に保存される。
  5. 「qauotaon」コマンドでクォータを有効にする([qauotaon ディレクトリ名])

  6. 「edquota」コマンドでユーザーごとのクォータを設定する([edquota ユーザー名])(viエディタが起動する)

  7. 「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 ユーザ名 ファイルの所有者で検索

使用した教材

LPIC101,102