検索

第5章 proc ファイルシステム

download PDF
Linux カーネルには、コンピューター上の物理デバイスへのアクセスを制御し、それらのデバイスとプロセスがいつ、どのような方法で情報のやりとりを行うかをスケジュールするという、2 つの主要な機能があります。/proc/ ディレクトリー( proc ファイルシステムとも呼ばれます)には、カーネルの現在の状態を表す特別なファイルの階層が含まれており、アプリケーションとユーザーがシステムのカーネルビューにピア接続できるようにします。
/proc/ ディレクトリー内で、システムのハードウェアと現在実行しているプロセスの詳細情報を見つけることができます。さらに、/proc/ ディレクトリーツリー内のファイルの一部をユーザーおよびアプリケーションが操作して、設定の変更をカーネルに通信できます。

5.1. 仮想ファイルシステム

Linux では、すべてのデータはファイルとして保存されます。大半のユーザーは、主要な 2 つのファイルタイプ (テキストとバイナリー) について精通していますただし、/proc/ ディレクトリーには、仮想 ファイル と呼ばれる別のタイプのファイルが含まれます。このため、/proc/仮想ファイルシステム と呼ばれることがよくあります。
これらの仮想ファイルには固有の特性があります。これらのほとんどはゼロバイトとして一覧表示され、表示されても大量の情報が含まれます。さらに、仮想ファイルの日時設定の大半は、現在の時刻と日付を反映しており、これらは常に更新されることを示しています。
/proc/interrupts/proc/meminfo/proc/mounts、および /proc/partitions などの仮想ファイルは、システムのハードウェアを最大から移動できます。/proc/filesystems ファイルや /proc/sys/ ディレクトリーなどの他の場合は、システム設定情報とインターフェイスを提供します。
情報を体系化するために、同様のトピックに関する内容が記載されたファイルは、仮想ディレクトリー/サブディレクトリーにグループ化されます。たとえば、/proc/ide/ には、すべての物理 IDE デバイスの情報が含まれます。同様に、プロセスディレクトリーには、システムで実行している各プロセスに関する情報が含まれます。

5.1.1. 仮想ファイルの表示

/proc/ ディレクトリー内のファイルで cat コマンド、より多く の、または less コマンドを使用すると、ユーザーはシステムに関する膨大な量の情報にすぐにアクセスできます。たとえば、コンピューターが持つ CPU のタイプを表示するには、cat /proc/cpuinfo と入力して、以下のような出力を受信します。
processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 5
model		: 9
model name	: AMD-K6(tm) 3D+
Processor stepping	: 1 cpu
MHz		: 400.919
cache size	: 256 KB
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 1
wp		: yes
flags		: fpu vme de pse tsc msr mce cx8 pge mmx syscall 3dnow k6_mtrr
bogomips	: 799.53
/proc/ ファイルシステムでさまざまな仮想ファイルを表示すると、人間が判読できないものの、一部の情報を簡単に理解できます。これは、仮想ファイルからデータを取得し、それを便利な方法で表示するユーティリティーが存在する理由の一部です。このユーティリティーの例には、lspciapmfree、および top が含まれます。
注記
/proc/ ディレクトリー内の仮想ファイルの一部は、root ユーザーのみが読み取り可能です。

5.1.2. 仮想ファイルの変更

一般的なルールとして、/proc/ ディレクトリー内のほとんどの仮想ファイルは読み取り専用です。ただし、一部の を使用してカーネルの設定を調整することができます。これは、/proc/sys/ サブディレクトリー内のファイルに対して特に当てはまります。
仮想ファイルの値を変更するには、echo コマンドと、> より大きい記号(>)を使用して、新しい値をファイルにリダイレクトします。たとえば、オンザフライでホスト名を変更するには、以下を入力します。
echo www.example.com > /proc/sys/kernel/hostname 
その他のファイルは、バイナリーまたはブール値のスイッチとして機能します。cat /proc/sys/net/ipv4/ip_forward を実行すると、0 または 1 のいずれかが返されます。0 は、カーネルがネットワークパケットを転送していないことを示します。echo コマンドを使用して ip_forward ファイルの値を 1 に変更すると、すぐにパケット転送が有効になります。
ヒント
/proc/sys/ サブディレクトリーで設定を変更するために使用されるもう 1 つのコマンドは、/sbin/sysctl です。このコマンドの詳細については、を参照してください。 sysctl コマンドの使用」
/proc/sys/ サブディレクトリーで利用可能なカーネル設定ファイルの一部の一覧は、/proc/sys/ を参照してください。

5.1.3. プロセスディレクトリーへのアクセス制限

マルチユーザーシステムでは、/proc/ に保存されているプロセスディレクトリーを保護し、root ユーザーのみが表示できるようにすることが便利なことがよくあります。hidepid オプションを使用すると、これらのディレクトリーへのアクセスを制限できます。
ファイルシステムのパラメーターを変更するには、mount コマンドに -o remount オプションを指定して実行します。root で以下のコマンドを実行します。
mount -o remount,hidepid=value /proc
hidepid に渡される は以下のいずれかになります。
  • 0 (デフォルト): すべてのユーザーが、プロセスディレクトリーに保存されている全ユーザーが読み取り可能なファイルを読み取ることができます。
  • 1 - ユーザーは自分のプロセスディレクトリーにのみアクセスできます。これにより、cmdlinesched、または status などの機密ファイルが root 以外のユーザーによるアクセスから保護されます。この設定は、実際のファイルパーミッションには影響しません。
  • 2 - プロセスファイルは、root 以外のユーザーには表示されません。プロセスの存在は他の手段で学習できますが、有効な UID と GID は非表示になっています。これらの ID を非表示にすると、侵入者が実行中のプロセスに関する情報を収集するタスクが複雑になります。

例5.1 プロセスディレクトリーへのアクセス制限

root ユーザーのみがプロセスファイルにアクセスできるようにするには、以下を入力します。
~]# mount -o remount,hidepid=1 /proc
hidepid=1 を使用すると、root 以外のユーザーはプロセスディレクトリーのコンテンツにアクセスできません。これを試みると、以下のメッセージで失敗します。
~]$ ls /proc/1/       
ls: /proc/1/: Operation not permitted
hidepid=2 を有効にすると、root 以外のユーザーにプロセスディレクトリーが非表示になります。
~]$ ls /proc/1/       
ls: /proc/1/: No such file or directory
また、hidepid が 1 または 2 に設定されている場合でも、ファイルを処理するユーザーグループを指定できます。これを行うには、gid オプションを使用します。root で以下のコマンドを実行します。
mount -o remount,hidepid=value,gid=gid /proc
gid を、特定のグループ ID に置き換えます。選択したグループのメンバーの場合、プロセスファイルは hidepid が 0 に設定されているかのように動作します。ただし、システム全体のタスクを監視しないユーザーは、グループに追加しないでください。ユーザーおよびグループの管理に関する詳細は、37章ユーザーとグループ を参照してください。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.