チャレンジ一覧 / linux-filesystem-top-level

Day 5: /etc

ディレクトリの概要

/etcはLinuxシステムの設定ファイルが保存されているディレクトリ。

基本的に実行ファイルはおかず、テキスト形式の設定ファイルが中心。(config only)

ネットワーク設定、ユーザー設定、サービス設定など、システムの動作を決める重要な設定がここに集まる。

主な用途

/etcの中身(一部抜粋)

ファイル役割概要
/etc/passwdユーザ一覧Linuxユーザ管理の基本
/etc/shadowパスワードセキュリティの中心
/etc/hostsホスト名解決DNS理解に繋がる
/etc/fstabマウント設定Linux起動とストレージ
/etc/hostnameホスト名ネットワーク設定
/etc/resolv.confDNS設定名前解決
/etc/systemd/サービス設定現代Linuxのサービス管理
/etc/ssh/SSH設定リモート接続

Linuxの仕組みと関係

Linuxでは「設定は/etcに置く」という設計思想があり、多くのソフトウェアもここに設定を保存する。

実際の中身をいくつか見ていく

/etc/passwd

Linuxに存在するユーザーアカウントの一覧を管理するファイル

ユーザー名、UID、ホームディレクトリ、ログインシェルなどの情報が保存されている。

%cat /etc/passwd(抜粋)
root:x:0:0:root:/root:/bin/bash
↑      ↑ ↑   ↑      ↑       ↑
名前   UID GID 説明  ホーム   シェル

※xはパスワード欄だが、ここには保存されていないため、xという表記になっている。 最後の項目はログインシェル。

/bin/bash 通常ユーザーが使用するシェル

/usr/sbin/nologin ログイン不可(人間がログインして操作する想定ではないユーザー)

/etc/systemd

Linuxのサービス管理を行うsystemdの設定ファイルが保存されるディレクトリ。

systemdは、Linuxの

などを行う仕組み

%la -1 /etc/systemd
journald.conf
logind.conf
network
networkd.conf
oomd.conf
pstore.conf
resolved.conf
sleep.conf
system
system.conf
system-generators
timesyncd.conf
user
user.conf

/etc/hosts

ここではDNSよりも優先されるローカル名前解決テーブル

※DNSとはドメイン名をIPアドレスに変換する仕組み

cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 <hostname>

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

※ここでドメイン設定をすると広告ブロックができる

例)下記を/etc/hostsに追加

0.0.0.0 ad.doubleclick.net
0.0.0.0 ads.yahoo.com
0.0.0.0 tracking.facebook.com
0.0.0.0 analytics.google.com
0.0.0.0 ads.twitter.com

こうすることで広告サーバ→0.0.0.0(存在しない)となり、通信が失敗して広告が消える

/etc/resolv.conf

DNSサーバの設定ファイル

LinuxがどのDNSサーバに問い合わせるかをここで定義する。

%cat /etc/resolv.conf
nameserver 127.0.0.53
options edns0 trust-ad
search .

nameserverはDNS問い合わせ先のことで、127.0.0.53はsystemd-resolvedというローカルDNSサービス(自分のPC内で動くDNSリゾルバ

アプリ

127.0.0.53 (systemd-resolved)

外部DNS

IPアドレス

という流れ

optionsはDNS問い合わせのオプション設定のこと。

※DNSSECはDNSの改ざん防止の仕組みのこと

searchはドメイン補完設定で、ここの値が設定されていると設定されたドメイン名に補完される。(複数設定されている場合には順番に試される。

/etc/nsswitch.conf

Linuxが「情報をどこから取得するか」を決める設定を定義する。

基本構成は

情報の種類:  取得元1 取得元2 取得元3

%cat /etc/nsswitch.conf 
passwd:         files systemd sss
group:          files systemd sss
shadow:         files systemd sss
gshadow:        files systemd

hosts:          files mdns4_minimal [NOTFOUND=return] dns
networks:       files

protocols:      db files
services:       db files sss
ethers:         db files
rpc:            db files

netgroup:       nis sss
automount:  sss
取得元(ソース)内容
filesローカルの設定ファイル(例: /etc/passwd, /etc/hosts, /etc/services など)
systemdsystemd が管理する内部データベース
sssSSSD(System Security Services Daemon)。LDAP や Active Directory などの外部認証サービスと連携するための仕組み
dnsDNSサーバによる名前解決
mdns4_minimalmDNS(Multicast DNS)。.local ドメインなどのLAN内名前解決
dbglibc が利用するデータベース形式の情報源(/var/db/ などの内部DB)
nisNIS(Network Information Service)。古いUNIXネットワーク認証システム(今はあまり使われない)

※SSSDとは、Linuxが外部のユーザ管理システムと連携するための仕組み(Linuxと外部認証サービスの橋渡しをするサービス)

※LDAP(Lightweight Directory Access Protocol)は、ユーザ情報や組織情報などを管理するディレクトリサービスのプロトコル

※外部認証基盤とはユーザ管理を中央サーバで一元管理する仕組み(ユーザ管理を一箇所に集約している)

例)

サービス用途
Active DirectoryWindows企業ネットワーク
LDAPLinux系ユーザ管理
FreeIPALinux認証システム