Linuxに慣れていないうちは、設定ファイルの場所を毎回調べながら作業することになります。/etc 配下には数百のファイルが存在しますが、日常的な管理業務で触れるのはその一部です。
この記事では、Linuxサーバーの運用管理で頻繁に使う /etc 配下の重要な設定ファイルを目的別にまとめ、各ファイルの役割・記述形式・実際の確認コマンドを解説します。Rocky Linux 9 / RHEL 9 / Ubuntu 24.04 LTS で動作確認済みです。
【この記事でわかること】
・Linux設定ファイルはほぼすべて /etc 配下のテキストファイルに集約されている
・/etc/hosts・/etc/fstab・/etc/passwd など運用必須ファイルを網羅
・ネットワーク・ユーザー管理・起動サービスの設定ファイルを目的別に整理
・cat / less / grep で内容確認、vi / nano で編集する基本操作も解説
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
/etcディレクトリとは何か
/etc("et cetera" の略とも言われる)は、Linuxにおけるシステム全体の設定ファイルを格納するディレクトリです。FHS(Filesystem Hierarchy Standard)で定義されており、ほぼすべてのLinuxディストリビューションで同じ役割を持ちます。・形式:ほぼすべてがテキストファイル(人間が直接編集可能)
・権限:参照は一般ユーザーも可能。編集はroot権限が必要
・バックアップ:本番環境では変更前に必ずバックアップを取る習慣を持つこと
/etc 配下を変更した場合の影響範囲はファイルによって異なります。即時反映されるものと、サービス再起動・OS再起動が必要なものがあるため、各ファイルの挙動を把握することが重要です。
ネットワーク関連の設定ファイル
1. /etc/hosts — 静的な名前解決
/etc/hosts は DNS を使わずに、IPアドレスとホスト名を直接マッピングするファイルです。DNS よりも優先されるため、開発環境での名前解決や緊急時の DNS 代替として使います。# /etc/hosts の確認 $ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.100 web01.example.com web01 192.168.1.101 db01.example.com db01
2. /etc/resolv.conf — DNSリゾルバの設定
/etc/resolv.conf は、名前解決に使う DNS サーバーと検索ドメインを指定します。$ cat /etc/resolv.conf # Generated by NetworkManager search example.com nameserver 192.168.1.1 nameserver 8.8.8.8
3. /etc/hostname — サーバーのホスト名
$ cat /etc/hostname web01.example.com # ホスト名の変更(再起動不要で即時反映) $ sudo hostnamectl set-hostname new-hostname.example.com
4. /etc/hosts.allow と /etc/hosts.deny — TCPラッパーのアクセス制御
古いシステムでは TCPラッパー(tcpd)によるアクセス制御が使われていました。現代の RHEL 9 / Rocky Linux 9 では firewalld に移行していますが、既存サーバーの保守でよく目にします。$ cat /etc/hosts.allow # 192.168.1.0/24 からの SSH を許可 sshd: 192.168.1. $ cat /etc/hosts.deny # すべてのサービスをデフォルト拒否 ALL: ALL
ユーザー・グループ管理の設定ファイル
1. /etc/passwd — ユーザーアカウント情報
/etc/passwd は、システム上の全ユーザーの基本情報を管理するファイルです。$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin nginx:x:987:982:Nginx web server:/var/lib/nginx:/sbin/nologin pakira:x:1000:1000:pakira:/home/pakira:/bin/bash # 書式: ユーザー名:パスワード:UID:GID:コメント:ホームディレクトリ:シェル # パスワードフィールドの "x" はシャドウパスワードを使用中であることを意味する
2. /etc/shadow — パスワードのシャドウファイル
パスワードの実体(ハッシュ値)と有効期限が格納されます。root のみが読み取り可能です。# 読み取りには root 権限が必要 $ sudo cat /etc/shadow | grep pakira pakira:$6$rounds=500000$xxxx...:19450:0:99999:7::: # 書式: ユーザー名:ハッシュ:最終変更日:最小:最大:警告:不活性:有効期限:予約
3. /etc/group — グループ情報
$ cat /etc/group | grep -E "^(wheel|docker|pakira)" wheel:x:10:pakira docker:x:988:pakira pakira:x:1000:
4. /etc/sudoers — sudo権限の設定
/etc/sudoers は、一般ユーザーに sudo コマンドでroot権限を付与するための設定ファイルです。必ず visudo コマンドで編集してください。直接 vi で編集すると構文エラー時にログインできなくなるリスクがあります。# visudo コマンドで編集(構文チェック付き) $ sudo visudo # wheel グループのメンバーに sudo を許可(RHEL 系のデフォルト) %wheel ALL=(ALL) ALL # パスワードなしで sudo を許可する例(セキュリティリスクに注意) # pakira ALL=(ALL) NOPASSWD: ALL
システム起動・サービス管理の設定ファイル
1. /etc/fstab — ファイルシステムのマウント設定
/etc/fstab は OS 起動時に自動マウントするファイルシステムを定義します。記述を誤ると起動不能になるため、変更前のバックアップが必須です。$ cat /etc/fstab # /etc/fstab # device mountpoint fstype options dump pass UUID=a1b2c3d4-e5f6-7890-abcd-1234567890ab / xfs defaults 0 0 UUID=f1e2d3c4-b5a6-9870-dcba-0987654321fe /boot xfs defaults 0 1 /dev/sdb1 /data ext4 defaults,nofail 0 2 tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0 # 変更後のテスト(-aオプションでfstabを再読み込み、エラーがないか確認) $ sudo mount -a
2. /etc/systemd/system/ — systemdユニットファイル
RHEL 9 / Rocky Linux 9 では systemd が init システムです。カスタムサービスの定義は /etc/systemd/system/ 配下に配置します。# カスタムサービスのユニットファイル例 $ cat /etc/systemd/system/myapp.service [Unit] Description=My Application After=network.target [Service] ExecStart=/usr/bin/myapp Restart=on-failure User=myuser [Install] WantedBy=multi-user.target # 変更後はデーモン再読み込みが必要 $ sudo systemctl daemon-reload $ sudo systemctl enable --now myapp
3. /etc/crontab と /etc/cron.d/ — スケジュール実行の設定
$ cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # 分 時 日 月 曜 ユーザー コマンド 0 2 * * * root /usr/local/bin/backup.sh # /etc/cron.d/ には個別のcronファイルを配置できる $ ls /etc/cron.d/ 0hourly sysstat
セキュリティ・認証関連の設定ファイル
1. /etc/ssh/sshd_config — SSHデーモンの設定
/etc/ssh/sshd_config はSSHサーバーの動作を定義します。本番環境では最低限以下の設定を確認・変更します。$ grep -E "^(Port|PermitRootLogin|PasswordAuthentication|PubkeyAuthentication)" /etc/ssh/sshd_config Port 22 PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes # 変更後はsshdを再起動して反映 $ sudo systemctl reload sshd
2. /etc/pam.d/ — PAM認証の設定
PAM(Pluggable Authentication Module)はLinuxの認証フレームワークです。パスワードポリシーや認証方式をサービスごとに細かく制御できます。# SSH認証のPAM設定を確認 $ cat /etc/pam.d/sshd | head -20 #%PAM-1.0 auth required pam_sepermit.so auth substack password-auth auth include postlogin ...
3. /etc/selinux/config — SELinuxの設定
$ cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of these three values: SELINUXTYPE=targeted # 現在の状態を確認 $ getenforce Enforcing
ログ・環境変数の設定ファイル
1. /etc/rsyslog.conf — syslogの設定
/etc/rsyslog.conf は、システムログの出力先とフィルタリングルールを定義します。# 主要なログ出力先の確認 $ grep -v "^#\\|^$" /etc/rsyslog.conf | head -20 $ModLoad imuxsock $ModLoad imklog $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat *.info;mail.none;authpriv.none;cron.none /var/log/messages authpriv.* /var/log/secure mail.* -/var/log/maillog cron.* /var/log/cron *.emerg :omusrmsg:*
2. /etc/environment と /etc/profile — 環境変数の設定
# /etc/environment はシェルに依存しないグローバル環境変数 $ cat /etc/environment PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # /etc/profile はログインシェル起動時に読み込まれる # /etc/profile.d/*.sh に個別スクリプトを配置するのが現代の作法 $ ls /etc/profile.d/ bash_completion.sh colorls.sh less.sh
実務Tips:設定ファイルを安全に編集するポイント
1. 必ず変更前にバックアップを取る
# タイムスタンプ付きでバックアップ $ sudo cp /etc/fstab /etc/fstab.bak.$(date +%Y%m%d_%H%M%S) $ ls /etc/fstab* /etc/fstab /etc/fstab.bak.20260407_103000
2. 変更差分を確認してから適用する
# diff で変更箇所を確認 $ diff /etc/ssh/sshd_config.bak /etc/ssh/sshd_config < PasswordAuthentication yes --- > PasswordAuthentication no
3. 変更後はサービス再起動の前に構文チェックを行う
# sshd の構文チェック $ sudo sshd -t # nginx の構文チェック $ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful # postfix の構文チェック $ sudo postfix check
本記事のまとめ
| ファイル | 用途 | 変更反映タイミング |
|---|---|---|
/etc/hosts |
静的な名前解決 | 即時 |
/etc/resolv.conf |
DNSサーバーの指定 | 即時(NMが上書きする場合あり) |
/etc/hostname |
サーバーのホスト名 | hostnamectlで即時 |
/etc/passwd |
ユーザーアカウント情報 | 即時 |
/etc/sudoers |
sudo権限の設定 | 即時(visudoで編集) |
/etc/fstab |
ファイルシステムのマウント | 再起動 or mount -a |
/etc/ssh/sshd_config |
SSHサーバーの設定 | systemctl reload sshd |
/etc/selinux/config |
SELinuxの動作モード | 再起動 |
/etc/rsyslog.conf |
syslogの出力先設定 | systemctl restart rsyslog |
/etc/crontab |
スケジュール実行の設定 | 即時(crondが自動再読み込み) |
関連記事として「LinuxのDNS設定の基本」や「Postfixでメールキューの状態を確認する方法」も参考にしてください。
Linuxサーバーの設定を体系的に学びませんか?
/etc 配下の設定ファイルを理解すると、Linuxサーバー管理の全体像が見えてきます。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:dstatコマンドでシステムリソースをモニタリングする(リアルタイム)
- 前のページへ:trコマンドでLinuxのファイル内テキストを大文字・小文字変換する方法|使い方と応用例
- この記事の属するカテゴリ:Linuxtipsへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます