Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Modern Linux
Search
oracle4engineer
PRO
September 10, 2025
Technology
0
32
Modern Linux
Oracle Cloud Hangout Cafe Season 10 #4
oracle4engineer
PRO
September 10, 2025
Tweet
Share
More Decks by oracle4engineer
See All by oracle4engineer
Autonomous Database サービス・アップデート (FY26)/adb-service-update-jp-fy26
oracle4engineer
PRO
0
17
Oracle Cloud Infrastructure IaaS 新機能アップデート 2025/06 - 2025/08
oracle4engineer
PRO
0
56
OCI Oracle Database Services新機能アップデート(2025/06-2025/08)
oracle4engineer
PRO
0
65
Autonomous Database - Dedicated 技術詳細 / adb-d_technical_detail_jp
oracle4engineer
PRO
4
10k
【Oracle Cloud ウェビナー】AI活用のデータ基盤におけるHeatWaveやMySQLの位置づけと活用方法
oracle4engineer
PRO
1
29
OCI GoldenGate サービス・アップデート(FY26)
oracle4engineer
PRO
0
35
Oracle Cloud Infrastructure:2025年8月度サービス・アップデート
oracle4engineer
PRO
0
210
Oracle Database Technology Night 92 Database Connection control FAN-AC
oracle4engineer
PRO
1
420
Oracle Base Database Service:サービス概要のご紹介
oracle4engineer
PRO
2
20k
Other Decks in Technology
See All in Technology
250905 大吉祥寺.pm 2025 前夜祭 「プログラミングに出会って20年、『今』が1番楽しい」
msykd
PRO
1
540
Webブラウザ向け動画配信プレイヤーの 大規模リプレイスから得た知見と学び
yud0uhu
0
210
【初心者向け】ローカルLLMの色々な動かし方まとめ
aratako
7
3.3k
Automating Web Accessibility Testing with AI Agents
maminami373
0
1.1k
Platform開発が先行する Platform Engineeringの違和感
kintotechdev
3
490
AWSで推進するデータマネジメント
kawanago
1
1.2k
[RSJ25] Feasible RAG: Hierarchical Multimodal Retrieval with Feasibility-Aware Embodied Memory for Mobile Manipulation
keio_smilab
PRO
0
120
AWSで始める実践Dagster入門
kitagawaz
1
490
kubellが考える戦略と実行を繋ぐ活用ファーストのデータ分析基盤
kubell_hr
0
150
大「個人開発サービス」時代に僕たちはどう生きるか
sotarok
19
9.4k
バッチ処理で悩むバックエンドエンジニアに捧げるAWS Glue入門
diggymo
3
140
開発者を支える Internal Developer Portal のイマとコレカラ / To-day and To-morrow of Internal Developer Portals: Supporting Developers
aoto
PRO
1
400
Featured
See All Featured
Done Done
chrislema
185
16k
Navigating Team Friction
lara
189
15k
Designing for Performance
lara
610
69k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
GraphQLとの向き合い方2022年版
quramy
49
14k
The Language of Interfaces
destraynor
161
25k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Statistics for Hackers
jakevdp
799
220k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.8k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
Transcript
Modern Linux Oracle Cloud Hangout Café Season 10 #4 Yutaka
Ichikawa Solutions Architect Sep 10, 2025
2 Copyright © 2025, Oracle and/or its affiliates @cyberblack28 Community
Oracle Cloud Hangout Café (#ochacafe) Publications Yutaka Ichikawa (市川 豊) クラウド事業統括 クラウド・エンジニアリング COE 統括 ソリューションズ・アーキテクト部 プリンシパル・クラウド・エンジニア
Copyright © 2025, Oracle and/or its affiliates 3 第1部:クラウドネイティブの基本概念を丁寧に解説 第2部:OCI
のクラウドネイティブサービスを機能ごとに解説 第3部:Oracle Cloud Free Tier を活用して、環境構築(IaC) アプリケーションリリース(CI/CD)、運用監視(Observability)までを ハンズオンで体得!! 2025年9月17日 新刊発売 https://bit.ly/oci-cloud-native-journey
Copyright © 2025, Oracle and/or its affiliates 4 2025年10月8日 出版記念イベント開催
https://bit.ly/oci-cloud-native-journey https://bit.ly/oci-cloud-native-book
Agenda title 5 Copyright © 2025, Oracle and/or its affiliates
1 2 3 4 5 6 モダン Linux について カーネル入門 シェルとスクリプト アクセス制御 アプリケーション、パッケージ管理、コンテナ 高度なトピック & モダンLinuxツール
モダン Linux について 6 Copyright © 2025, Oracle and/or its
affiliates
モダン Linux について 7 Copyright © 2025, Oracle and/or its
affiliates 参考書籍 1章 Linux の入門 2章 Linux カーネル 3章 シェルとスクリプト 4章 アクセス制御 5章 ファイルシステム 6章 アプリケーション、パッケージ管理、コンテナ 7章 ネットワーク 8章 オブザーバビリティ(可観測性) 9章 高度なトピック 付録A 便利なコマンド集 付録B モダン Linux ツール
モダン Linux について 8 Copyright © 2025, Oracle and/or its
affiliates 書籍で述べる「モダン Linux」とは? モダンな環境の広がり モバイル機器、クラウドコンピューティング、IoT、 プロセッサアーキテクチャの多様化 Linux が果たす役割 ほとんどのモダンなシステムに Linux が組み込まれている Linux は今では、日常生活・産業の基盤としてあらゆる 場面に組み込まれ、開発者や企業に欠かせない存在に なっている 多様化するモダンな環境に適用する Linux
モダン Linux について 9 Copyright © 2025, Oracle and/or its
affiliates 書籍の概要 各章は、従来からの基礎的な Linux の知識を土台としつつ、 最新のツールやモダンな使い方も取り入れて解説! Linux 基礎知識 モダンなアプローチ ピックアップしたアジェンダに対して、この二つを軸に発表します!
カーネル入門 10 Copyright © 2025, Oracle and/or its affiliates
カーネル入門 11 Copyright © 2025, Oracle and/or its affiliates 書籍の概要
• Linux カーネルとは何か • カーネル全体と構成要素 • Linuxのアーキテクチャ全体とLinuxカーネルが果たす役割 • カーネルが全てのコア機能を提供し、OS ではない Linux 基礎知識 • モダンなカーネル拡張 eBPF モダンなアプローチ
カーネル入門 12 Copyright © 2025, Oracle and/or its affiliates カーネル(Kernel)とは?
カーネル( Kernel )とは、 OS の中核で重要な部分( OS ではない)
カーネル入門 13 Copyright © 2025, Oracle and/or its affiliates カーネル(Kernel)の役割
カーネル概要図 ユーザー空間 カーネル ハードウェア
カーネル入門 14 Copyright © 2025, Oracle and/or its affiliates カーネル(Kernel)の役割
1.リソース管理 2.プロセス管理 3.メモリ管理 4.デバイス管理 5.システムコール カーネルは、CPU、メモリ、周辺機器等のリソースを管理し、他のプログラムから利用できるようにする。 プロセスの生成、実行、終了、リソースの割り当て、排他制御、プロセス間通信などの制御を行う。 プロセスごとに仮想的なメモリ空間を作り、プロセスにメモリを割り当てる。 必要に応じて、メモリ内容をハードディスクに退避し、物理搭載メモリ以上の空間を提供する。 カーネルは、デバイスドライバが物理的に周辺機器にアクセスするための機能やメモリ空間を提供。 アプリケーションから呼び出し可能なプログラム群。アプリケーションが、このシステムコールを通じて、カーネルに処理を依 頼する。
カーネル入門 15 Copyright © 2025, Oracle and/or its affiliates カーネル(Kernel)の役割
アプリケーションがファイルからデータを読み込む処理
カーネル入門 16 Copyright © 2025, Oracle and/or its affiliates 特権モードと非特権モード
Linuxには、カーネルとアプリケーションを正しく動作させるために特権モードと非特権モードがある。 カーネルで扱うプログラムは、誤ると他のプロ グラムに影響を及ぼすので、カーネルのみ が実行できるよう特権モードが与えられ、 カーネル以外のアプリケーションは非特権 モードが与えられている。
カーネル入門 17 Copyright © 2025, Oracle and/or its affiliates カーネルの拡張
1.カーネルビルド 2.カーネルモジュール 3.eBPF カーネル本体のソースコードを編集し、再コンパイルして機能追加や変更を行う。 必要な機能をモジュールとして作成し、コマンドで動的に読み込む。 カーネル内で動くバイトコードをユーザー空間から安全にロードして実行する。 拡張しやすい 拡張しにくい モダンなアプローチ
カーネル入門 18 Copyright © 2025, Oracle and/or its affiliates eBPF
とは? eBPF(Extended Berkeley Packet Filter)は、 Linux カーネルのソースコードの変更やモジュールを追加することなく Linux カーネル内部でプログラムを実行できる技術
カーネル入門 19 Copyright © 2025, Oracle and/or its affiliates eBPF
とは? Linux カーネル空間で稼働し、Linux カーネルの機能を拡張する技術 Linux カーネルに直接ロードされて、新しい機能の追加、 既存機能を変更するプログラム Linux カーネルのサブセットとして、Linux カーネルの拡 張や制御を実行できるプログラム • プログラミングのハードルが高い • 後方互換性を担保しないガバナンスによりメンテナンスが厳しい • レビュー条件や開発者交渉などが厳しく、アップストリームのハー ドルが高い • アップストリームからディストリビューションのリリースまで時間が長い • カーネルモジュールプログラミングに比べて、ハードルが低い • eBPF プログラムは後方互換性を担保されている • 後方互換性担保によるアップストリームの不要 • アップストリーム不要のため、リリースも早くできる
カーネル入門 20 Copyright © 2025, Oracle and/or its affiliates eBPF
開発 1. プログラム作成 例: 「パケットが届いたら中身をチェックしてフィルタする」処理。 2. bytecode にコンパイル clang -target bpf などで変換。 3.カーネルにロード & フックにアタッチ 例: XDP フック(ネットワークスタックの入口)に関連付け。 4.イベント発生で実行 ネットワークパケットが届くたびに、その eBPF プログラム(bytecode)が実行される。
カーネル入門 21 Copyright © 2025, Oracle and/or its affiliates eBPF
開発 eBPF は、C 言語でプログラミングして、Clang というコンパイラを利用して、bytecode というプログラムを生成する bytecode は、Linux カーネル内で動作する独自のレジスタマシンと命令セットを持ち、 アーキテクチャ非依存な仮想マシン。
カーネル入門 22 Copyright © 2025, Oracle and/or its affiliates eBPF
開発 bytecode を Linux カーネルにロード 主要なライブラリ - libbpf (C) - cilium/ebpf (Go) - libbpf-rs (Rust) ELFファイルを加工して、最終的に Syscall に渡す=ロード ※ユーザスペースでELFフォーマット のファイルをカーネルが読み込めるよ うにする処理
カーネル入門 23 Copyright © 2025, Oracle and/or its affiliates eBPF
開発 ロードされた bytecode を Verifier で検証、JIT Compiler で各 CPU の命令に合わせて、bytecode を変換 bytecode を Verifier で検証
カーネル入門 24 Copyright © 2025, Oracle and/or its affiliates eBPF
開発 bytecode の実行は、フックからイベントドリブンに呼び出されて実行 主なフック • Socket : socket のデータ入出力を契 機にフィルタする • Syscall : システムコールの呼び出しを 契機にトレースやフィルタする • Kprobe / ftrace : カーネルの関数の呼 び出しを契機にトレースなど行う • TC / XDP : NIC のパケット入出を契 機にパケットに対する処理を行う etc Program types : https://github.com/iovisor/bcc/blob/master/docs/kernel- versions.md#program-types
カーネル入門 25 Copyright © 2025, Oracle and/or its affiliates eBPF
開発 eBPF Maps は、ユーザプログラムとカーネルプログラムの間でデータを共有する仕組み Key &Value ペアのデータ構造をベースに配列やハッシュテーブルなどのタイプ を利用して、ユーザプログラムとカーネルプルグラム間でデータを共有、読み取り、 更新が可能 Maps types : https://github.com/iovisor/bcc/blob/master/docs/kernel- versions.md#map-types
カーネル入門 26 Copyright © 2025, Oracle and/or its affiliates eBPF
開発 [ユーザーの意図] 「プロセスを監視したい」「不審な通信を止めたい」 ↓ (抽象化) [ツール] bpftrace / Falco / Cilium / Pixie ... ↓ (内部で) [イベントフックに eBPF バイトコードをアタッチ] ↓ [カーネルでの監視・制御が実行] eBPF を使った Observability(可観測性)や Security(セキュリティ)のツールは、イベントフックとバイトコードの仕 組みを直接触らなくてもいいように抽象化している。 • eBPF 自体は「フック+バイトコード実行」の低レ ベル仕組み。 • Observability や Security のツールは、その 低レベル操作を隠蔽して 「ポリシーを書く」「スク リプトを書く」「UI で見る」といった高レベル体験 にしている。
カーネル入門 27 Copyright © 2025, Oracle and/or its affiliates 参考情報
https://bit.ly/ochacafe_archive
シェルとスクリプト 28 Copyright © 2025, Oracle and/or its affiliates
シェルとスクリプト 29 Copyright © 2025, Oracle and/or its affiliates 書籍の概要
• シェルの基本 • ストリーム • シェルスクリプトのグッドプラクティス Linux 基礎知識 • モダンなコマンド • モダンなシェル モダンなアプローチ
シェルとスクリプト 30 Copyright © 2025, Oracle and/or its affiliates シェルの基本
シェル Kernel(カーネル) システムライブラリ 1.コマンドを入力 3.コマンド結果を出力 2.コマンド実行・終了 $date Dateコマンドを探す /usr/bin/dateを実行 Thu Sep 10 19:03:42 JST 2025 • ユーザーはカーネルを直接操作することはできない • シェルがカーネルのインターフェースとなり、ユーザからのコマンドを受付、カーネルに実行を依頼し、カーネルから実行結 果を受け取って画面に表示
シェルとスクリプト 31 Copyright © 2025, Oracle and/or its affiliates シェルの基本
bash • sh(Bourne Shell)互換で、機能拡張されたシェル • Bash は Bourne Again SHell の略称 • 多くの Linux ディストリビューションでデフォルトのログインシェル として採用 • ターミナルとシェルスクリプトの実行の両方に対応 シェル • シェルはターミナル内で動作し、コマンドを解釈して実行するコマンドインタプリタ • POSIX(Portable Operating System Interface)規格では、標準シェルを sh として定義 • この sh の起源は、Stephen Bourne が開発した Bourne shell(sh)に由来
シェルとスクリプト 32 Copyright © 2025, Oracle and/or its affiliates ストリーム
標準入力、標準出力、標準エラー出力 標準入出力 説明 標準入力(stdin) 標準的な入力(通常はキーボード) 標準出力(stdout) 標準的な出力(通常はディスプレイ) 標準エラー出力(stderr) エラーメッセージの標準的な出力(通常はディスプレイ)
シェルとスクリプト 33 Copyright © 2025, Oracle and/or its affiliates ストリーム
Linuxにおいてリダイレクトは、標準出力や標準入力、標準エラー出力の「向かう先を変更する」こと 意味しています。 標準出力、標準入力、標準エラー出力には割り振り番号があります。 割り振り番号 説明 0 標準入力 1 標準出力 2 標準エラー出力 リダイレクトにはリダイレクト記号があります。 リダイレクト記号 説明 < 標準入力 > 標準出力 2> 標準エラー出力
シェルとスクリプト 34 Copyright © 2025, Oracle and/or its affiliates ストリーム
記号 説明 < test.txt 標準入力を test.txt に変更する $ cat < test.txt > test.txt 標準出力を test.txt に変更する $ ls -l > test.txt >> test.txt 標準出力の出力を test.txt の末尾に追記する $ ls –l >> test.txt 2> test.txt 標準エラー出力の出力を test.txt に変更する $ find / -name passwd 2> test.txt 2>> test.txt 標準エラー出力の出力を test.txt の末尾に追記する $ find / -name passwd 2>> test.txt > test.txt 2>&1 標準エラー出力を標準出力にリダイレクト後、まとめて test.txt にリダイレクトする $ find / -name passwd > test.txt 2>&1 2> /dev/null 標準エラー出力を出力しない $ find / -name passwd 2> /dev/null リダイレクト記号
シェルとスクリプト 35 Copyright © 2025, Oracle and/or its affiliates ストリーム
$ コマンド1 | コマンド2 | ・・・ (例) history コマンドを less コマンドと連携してスクロール表示する $ history | less パイプライン
シェルとスクリプト 36 Copyright © 2025, Oracle and/or its affiliates ストリーム
フィルタコマンドとは、標準入力を入力として受け取り、標準出力に出力するコマンド コマンド 説明 cat 入力をそのまま出力する。 tac 逆順に出力する。 sort 順番に並び替える。 head 先頭の数行を表示する(デフォルトは先頭10行)。 tail 末尾の数行を表示する(デフォルトは末尾10行)。 grep 指定した検索パターンに一致する行だけ表示する。 uniq 重複した行を取り除く。 wc 行数やバイト数を出力する。 cut 入力の一部を切り出す。 tr 文字を変換、削除する。
シェルとスクリプト 37 Copyright © 2025, Oracle and/or its affiliates ストリーム
標準入力を標準出力とファイルに出力する。 オプション 説明 -a,--append 入力をそのまま出力する。 -i,--ignore-interrupts 割り込みシグナルを無視する。 --help tee コマンドの概要を表示する。 $ tee <オプション> ファイル名 (例)ls -lの実行結果を、画面表示と同時にカレントディレクトリにもファイルとして保存。 $ ls -l | tee result.txt
シェルとスクリプト 38 Copyright © 2025, Oracle and/or its affiliates シェルスクリプトのグッドプラクティス
「ベスト」=唯一の正解ではなく、状況に応じた「グッド」な習慣を選ぶのが大切! 項目 概要 ⚡ Fail fast(すぐ失敗する) set -e, set -o pipefail で異常時に即停止 bash -x script.sh でデバッグ実行 🔑 機密情報を埋め込まない パスワードやAPIキーは環境変数や入力で渡す コマンドライン引数に出すと ps で漏洩リスク 🧹 入力のサニタイズ 変数にデフォルト値を設定 例: rm -rf "$PROJECTHOME"/* → $PROJECTHOME が空なら危険 🔧 依存関係の確認 curl や jq が必ずあるとは限らない 代替手段(例: curl がなければ wget)を用意 🚨 エラー処理 単なる「Error 123」ではなく、原因と対処を示す 例: /project/xyz に書き込めません → 権限を確認してください 📝 ドキュメント化 # コメント を入れて読みやすく 80カラム程度に揃えると差分も見やすい 🔄 バージョン管理 Gitで履歴管理 → 修正や共有が容易 ✅ テストとLint shellcheck などで文法チェック 配布前に動作テストを必ず実施
シェルとスクリプト 39 Copyright © 2025, Oracle and/or its affiliates シェルスクリプトのグッドプラクティス
スクリプトの lint とテスト https://www.shellcheck.net/
シェルとスクリプト 40 Copyright © 2025, Oracle and/or its affiliates モダンなコマンド
exa, bat, rg コマンドを紹介 exa ⇒ eza exa は、ls のモダンな代替コマンド、現在は開発が停止して、eza が後継のコマンド • Rust製で高速かつ安全 • デフォルトでカラー表示やアイコン表示(フォント対応時) • Gitリポジトリ情報の表示(--git オプション) • ツリー表示(--tree オプション) • 人間に読みやすいファイルサイズ表記(-h オプション) • 拡張属性やアクセス権限の見やすい表示 eza # ls とほぼ同じ eza -l # 詳細表示(ls -l 相当) eza -lh # サイズを人間が読みやすい形式で表示 eza --tree # ツリー形式で表示 eza --git # Gitの状態を表示
シェルとスクリプト 41 Copyright © 2025, Oracle and/or its affiliates モダンなコマンド
bat bat コマンドは、cat コマンドのモダンな代替ツールです。ファイルの中身を表示するだけでなく、構文ハイライトや行番号 表示など、プログラマーに便利な機能を標準で備えている。 Ubuntuでは、batcat コマンドとしてデフォルトで利用できる。 • 構文ハイライト • 行番号表示 • Git連携:変更行の表示(差分をマーク) • cat と同等の使い方が可能(標準入力対応) • less を統合してページング表示 • カラースキームや表示形式を簡単に変更可能 • Rust 製 bat file.txt # ファイル内容をカラー表示 bat -n file.txt # 行番号を表示(デフォルトでは既に表示) bat --style=plain file # プレーン表示(色なし) bat --diff # Git差分を強調
シェルとスクリプト 42 Copyright © 2025, Oracle and/or its affiliates モダンなコマンド
rg rg コマンドは、ripgrep の実行コマンド名で、grep のモダンで高速な代替ツール。大規模なコードベースやディレクト リ検索でも非常に高速に動作し、開発者向けの便利機能を多く備えています。 • 非常に高速 • デフォルトで再帰検索 • .gitignore を自動的に尊重 • 正規表現検索に標準対応 • 検索結果をカラー表示 • バイナリファイルを自動的に無視 • 文字コードを自動判別(UTF-8以外も可能) • Rust 製 rg keyword # カレントディレクトリ以下を検索 rg -i keyword # 大文字小文字を無視 rg "foo.*bar" # 正規表現検索 rg --type=py main # 拡張子 .py のファイルだけ検索 rg --files # 対象ファイルの一覧だけ表示
シェルとスクリプト 43 Copyright © 2025, Oracle and/or its affiliates モダンなシェル
fish シェル fishシェル(Friendly Interactive SHell)は、名前の通り「使いやすさ」に重点を置いた Unix 系シェル • 設定なしでも便利 インストール直後から補完や色分けが有効 • わかりやすい補完機能 コマンドや引数を入力すると候補がリアルタイムに表示され、Tab キーで選択可能 履歴からも候補を出してくれるため、以前打ったコマンドをすぐ再利用可能 • 色付きシンタックスハイライト 正しいコマンドは緑、間違いは赤など、入力中に視覚的なフィードバックがある • Webベースの設定UI fish_config コマンドでブラウザからテーマや補完設定を変更可能 • わかりやすい構文 Bash よりも直感的な記法で、$ や export を多用せずに変数設定や環境変数操作が可能
シェルとスクリプト 44 Copyright © 2025, Oracle and/or its affiliates モダンなシェル
他のモダンなシェル • Z シェル 高機能でカスタマイズ性の高いシェル。Bash互換性があり、補完やテーマ変更、プラグイン拡張が容易。oh-my-zsh などのフレーム ワークと組み合わせると使いやすさが大幅に向上。 • Oil シェル PythonやJavaScriptユーザー向けに作られたシェルで、対話的な利用よりもスクリプトの作成・実行を重視。 • murex POSIX 準拠のシェルに、統合テストフレームワーク、型付きパイプライン、イベント駆動型プログラミングなどの機能を追加した高機能 シェル。 • Nushell 実験的な新しいタイプのシェルで、表形式の出力や強力なクエリ言語が特徴。 • PowerShell Windows PowerShellから派生したクロスプラットフォーム対応シェル、Windows/Linux/macOS に対応。
シェルとスクリプト 45 Copyright © 2025, Oracle and/or its affiliates ターミナルマルチプレクサ
1つの端末(ターミナル)上で複数のセッションや画面を同時に管理できるツール • SSH 接続が切れても作業を継続したい 作業中のセッションを保持すれば再接続後すぐに復帰可能。 • 複数の作業を並行して進めたい ペイン分割でビルドログ・サーバ監視・エディタを同時表示。 • 長時間動く処理を実行 ジョブを実行しっぱなしで切断しても安全。 tmux セッション ウィンドウ 1 ペイン 1 ペイン 2 ウィンドウ 2 ペイン 3 ターミナル • セッション 複数ウィンドウ・ペインをまとめる作業空間全体 • ウィンドウ 1つの仮想端末画面 • ペイン ウィンドウを分割した領域 書籍では screen と tmux を紹介し、screen は、現在メ ンテナンスが活発ではないとして、tmux をモダンな位置づけと している
アクセス制御 46 Copyright © 2025, Oracle and/or its affiliates
アクセス制御 47 Copyright © 2025, Oracle and/or its affiliates 書籍の概要
• ユーザー、ファイル、プロセスに対するアクセス制御 • パーミッション • Linux ケーパビリティ Linux 基礎知識 • seccomp モダンなアプローチ
アクセス制御 48 Copyright © 2025, Oracle and/or its affiliates ユーザー、プロセス、ファイル
起動 ユーザー プロセス ファイル 使用 所有 項目 概要 ユーザー プロセスを起動し、ファイルを所有。プロセスとは、カーネルがメインメモリにロードして実行するプログラム (実行ファイル)のことを指す。 ファイル デフォルトでは、ファイルを作成したユーザーがそのファイルを所有。 プロセス 他のプロセスとの通信およびデータの永続化のためにファイルを使用する。ユーザーもファイルを使用する が、それはプロセスを介した間接的な使用。
アクセス制御 49 Copyright © 2025, Oracle and/or its affiliates 従来の
Linux にアクセス制御 • 「スーパーユーザー(何でもできる)」と「一般ユーザー(制限あり)」の2種類。 • 特定の機能(例:ネットワーク設定変更)を許可するには、プロセスをスーパーユーザーとして実行する必要があった。 • これは侵入された場合、特権を悪用されやすい危険がある。
アクセス制御 50 Copyright © 2025, Oracle and/or its affiliates アクセス制御の種類
任意アクセス制御 強制アクセス制御 • 「この人にはOK、この人にはダメ」と、ユーザーごとに 許可を設定できる。 • 権限を持っている人は、他の人にその権限を渡せる。 • 情報や人に「レベル(ランク)」をつけ、ルールでアク セスを決める。 • 管理者だけが設定でき、ユーザーは自分のファイルで も自由に権限を変えられない。
アクセス制御 51 Copyright © 2025, Oracle and/or its affiliates ユーザー管理
2種類のユーザーアカウント システムユーザー 一般ユーザー • システムユーザーは、人がログインして使うのではなく、 サービスやプログラムを動かす専用アカウント。 • 多くの場合、システムユーザーがデーモン(バックグラ ウンドで動くプログラム)を実行する。 • Linuxで、シェルを使ってログインし操作する人間用 の通常のユーザーアカウント。 Linux 上ではどのようにシステムユーザーや一般ユーザーなどを識別しているのか?
アクセス制御 52 Copyright © 2025, Oracle and/or its affiliates ユーザー管理
• ログイン時に入力するユーザー名とパスワードの組み合わせで識別 • ユーザーは、OS 内部では UID (User Identifier) で識別される ユーザ • グループは、ユーザーをまとめた集まり • ユーザーは、同時にいくつものグループに所属できる • どのユーザーも最低一つのグループに所属している • ユーザーの新規作成時にグループを指定しないと、自動的にユーザー名と同 じグループが作成されて、所属する • OS 内部では GID (Group Identifier) で識別される グループ Linux ではユーザーとグループという 形態で管理 識別として UID を利用する
アクセス制御 53 Copyright © 2025, Oracle and/or its affiliates ユーザー管理
UID の範囲と用途(32 ビット unsigned の場合) UID 範囲 用途 0 root(スーパーユーザー) 1 - 999 システムユーザー(デーモンやサービス用) 1000 - 65533 一般ユーザー(ログインして操作する人間用アカウント) 65534 nobody ユーザー(匿名・権限最小ユーザー) 65535 無効 UID(-1 として扱われる) 65536 - 4294967294 拡張 UID 範囲(一般ユーザーや特定用途に割り当て可能) 4294967295 無効 UID(-1 として扱われる、unsigned 最大値) ※ディストリビューションにより異なる場合がある
アクセス制御 54 Copyright © 2025, Oracle and/or its affiliates パーミッション(ファイル/ディレクトリ)
• Linux では、ファイルやディレクトリは、パーミッション(アクセス権)で保護されている • root ユーザーは、全てのパーミッション(アクセス権)を変更できる • Linux では、ファイルやディレクトリにオーナー(所有者)権限が付与されている • ファイルやディレクトリの作成者が「オーナー(所有者)」となる • オーナー(所有者)は、所有しているファイルやディレクトリのパーミッション(アクセス権限)を自由に変更できる 「誰が」「どのファイルやディレクトリ」に「どの程度」アクセスできるかを決定する。
アクセス制御 55 Copyright © 2025, Oracle and/or its affiliates パーミッション(ファイル/ディレクトリ)
パーミッション(アクセス権)とオーナー(所有者) $ ls -l /usr/bin/pwd - rwxr-xr-x. 1 root root 33232 11月 6 2016 /usr/bin/pwd ファイルのパーミッション(アクセス権) ファイルのオーナー(所有者) ファイルが所属するグループ
アクセス制御 56 Copyright © 2025, Oracle and/or its affiliates パーミッション(ファイル/ディレクトリ)
「誰に、どのような操作を許可するか」という権限を設定する仕組み。 $ ls -l /usr/bin/pwd - rwxr-xr-x. 1 root root 33232 11月 6 2016 /usr/bin/pwd - ファイルを示す d ディレクトリを示す l シンボリックリンクを示す 記号 数字 説明 r 4 読み取り(read) w 2 書き込み(write) x 1 実行(execute) - 0 何もできない ファイルのパーミッション(アクセス権)
アクセス制御 57 Copyright © 2025, Oracle and/or its affiliates パーミッション(ファイル/ディレクトリ)
「誰に、どのような操作を許可するか」という権限を設定する仕組み。 - ファイルを示す d ディレクトリを示す l シンボリックリンクを示す ディレクトリのパーミッション(アクセス権) $ ls -l dir1 drwxr-xr-x. 2 root root 6 5月 26 26 19:02 . 記号 数字 説明 r 4 読み取り(read) ディレクトリに含まれるファイル一覧の取得 w 2 書き込み(write) ディレクトリ内へのファイルやサブディレクトリの作成・ 削除 x 1 実行(execute) ディレクトリをカレントディレクトリにする - 0 何もできない
アクセス制御 58 Copyright © 2025, Oracle and/or its affiliates パーミッション(ファイル/ディレクトリ)
パーミッションの変更(シンボルモード) $ chmod [ugoa] [+-=] [rwx] <ファイル名> 誰に どうする 何を 記号 説明 u ユーザ(オーナー) g グループ o その他のユーザ a ugoすべて 記号 説明 + 現在の権限に追加 - 現在の権限から削除 = 指定した権限で上書き 記号 説明 r 読み取り(read) w 書き込み(write) x 実行(execute) 誰に どうする 何を
アクセス制御 59 Copyright © 2025, Oracle and/or its affiliates パーミッション(ファイル/ディレクトリ)
$ chmod u+w test.txt オーナー r-- グループ r-- その他 r-- オーナー rw- グループ r-- その他 r-- $ chmod g-w test.txt オーナー rw- グループ rwx その他 r-- オーナー rw- グループ r-x その他 r-- $ chmod go=r test.txt オーナー rwx グループ rwx その他 rwx オーナー rwx グループ r-- その他 r--
アクセス制御 60 Copyright © 2025, Oracle and/or its affiliates パーミッション(ファイル/ディレクトリ)
パーミッションの変更(数値モード) $ chmod [8進数の数値] <ファイル名> 記号 8進数の数値 r (読み取り) 4 w (書き込み) 2 x (実行) 1 8進数の数値 オーナー rwx グループ rw- その他 r-x 421 420 401 4+2+1 4+2+0 4+0+1 7 6 5 8進数に置き換えてみます。 それぞれを足します。
アクセス制御 61 Copyright © 2025, Oracle and/or its affiliates パーミッション(ファイル/ディレクトリ)
$ chmod 644 test.txt オーナー r-- グループ r-- その他 r-- オーナー rw- グループ r-- その他 r-- $ chmod 654 test.txt オーナー rw- グループ rwx その他 r-- オーナー rw- グループ r-x その他 r-- $ chmod 744 test.txt オーナー rwx グループ rwx その他 rwx オーナー rwx グループ r-- その他 r--
アクセス制御 62 Copyright © 2025, Oracle and/or its affiliates パーミッション(ファイル/ディレクトリ)
ディレクトリとスティッキービット(Sticky Bit) • ディレクトリに設定する特殊なパーミッション • スティッキービット(Sticky Bit)が設定されたディレクトリは、すべてのユーザーがファイル・ディレクトリを書き込める が、作成者とroot ユーザーしか削除できない • /tmp ディレクトリは、スティッキービット(Sticky Bit)が設定されている
アクセス制御 63 Copyright © 2025, Oracle and/or its affiliates パーミッション(ファイル/ディレクトリ)
スティッキービット(Sticky Bit)を確認 # ls -l /tmp drwx rwx rwt 14 root root 4096 5月 30 10:05 /tmp/ スティッキービット(Sticky Bit)が設定されているディレクトリには「その他」のパーッミッションに「t」が付与される。 # chmod o+t <ディレクトリ> # chmod 1xxx <ディレクトリ> スティッキービット( Sticky Bit )を設定 「その他」のパーミッションに「t」を追加。 パーミッションに「1000」を足す。
アクセス制御 64 Copyright © 2025, Oracle and/or its affiliates プロセスにおける権限管理
Linux では、ユーザーだけでなく、プロセスにも「誰の権限で動いているか」を示すID(UID)がある。 代表的な UID の種類 概要 実 UID (Real UID) プロセスを起動したユーザーの ID(プロセスの本当の持ち主)。 実効 UID (Effective UID) プロセスが実際に使える権限を決める ID。ファイルやリソースへのアクセスに使う。 保存 set-user-ID setuid ビット付きプログラムで使う特別な UID。必要に応じて権限を一時的に切り 替えられる。 ファイルシステム UID ファイルアクセス専用の UID(実効 UID と同じことが多い)。
アクセス制御 65 Copyright © 2025, Oracle and/or its affiliates プロセスにおける権限管理
プロセス生成(fork)時は親の UID を引き継ぎ、実行ファイル切り替え(execve)では実 UID は変わらないが、 実効 UID や保存 UID は変わる場合がある。 [通常の実行] ユーザ (UID=1000) ──> プロセス実行 ──> 実効UID = 1000 (普通の権限で動作) [setuid プログラム実行] ユーザ (UID=1000) ──> passwd (setuid root) ──> 実効UID = 0 (root) (一時的にroot権限で動作) [chroot / サンドボックス] ユーザ (UID=1000) ──> プロセス ──> 実効UID 変更される場合あり (環境によって制限・切替)
アクセス制御 66 Copyright © 2025, Oracle and/or its affiliates プロセスにおける権限管理
setuid 例: UID 1000 の一般ユーザーが passwd コマンド(setuid ビット付き)を実行すると、実効 UID が一時的に root (0)になり、パスワード変更が可能になる。 • そのファイルを実行するプロセスの 実効 UID を、ファイル所有者の UID に一時的に変更する。 • これにより、一般ユーザーが一時的に管理者権限や他ユーザーの権限で処理できる。 -rwsr-xr-x 1 root root 54256 Jun 1 /usr/bin/passwd
アクセス制御 67 Copyright © 2025, Oracle and/or its affiliates 高度な権限管理
- Linux Capabilities - Linux Capabilities は、従来の「root ユーザー=全権限」という仕組みを細分化し、特定の機能ごとに必要な権 限だけを個別に付与できるようにした仕組み。 root または非 root の二択だった権限管理を ファイルやプロセス単位で必要な権限だけを持たせる形に変更
アクセス制御 68 Copyright © 2025, Oracle and/or its affiliates 高度な権限管理
- Linux Capabilities - $ sudo setcap cap_net_bind_service=+ep /usr/bin/myapp 以下例では、myapp に1024番未満のポートをバインドできる権限(CAP_NET_BIND_SERVICE)を与えます。 +ep は有効化(Effective)と許可(Permitted)の両方を設定する指定。 $ sudo setcap -r /usr/bin/myapp 1.実行ファイルにケーパビリティを付与 2.ケーパビリティを削除 対象のファイルから全てのケーパビリティが取り除かれます。
69 Copyright © 2025, Oracle and/or its affiliates seccomp とは?
• seccomp = Secure Computing Mode • Linuxカーネルのセキュリティモジュール • プロファイルを作成して、コンテナが呼び出せるシステムコール(プロセス)を制限。 • 不要なシステムコールを制限することで、カーネルの脆弱性を狙った攻撃を防ぐ。 Container Host seccomp profile { "defaultAction": "SCMP_ACT_ALLOW", "syscalls": [ { "names": ["chmod","fchmodat","chmodat"], "action": "SCMP_ACT_ERRNO" } ] } prohibit-chmod.json xxx Container $ chmod 777 xxx $ docker run --security-opt seccomp=prohibit-chmod.json ubuntu:21.10 権限設定不可 アクセス制御 高度な権限管理 - seccomp - 対象がシステムコール
70 Copyright © 2025, Oracle and/or its affiliates | Confidential:
Internal/Restricted/Highly Restricted Kubernetes Node seccomp { "defaultAction": "SCMP_ACT_ALLOW", "syscalls": [ { "names": [“mkdir",“mkdirat"], "action": "SCMP_ACT_ERRNO" } ] } $ mkdir test mkdir: cannot create directory 'test': Operation not permitted /var/lib/kubelet/seccomp/pro files/prohibit-mkdir seccomp が有効か を確認 ① seccomp の Profile を作成 ② Profile を指定したマニフェストを作成と適用 ③ ④ manifest mkdir を実行してNGを確認 ⑤ アクセス制御 高度な権限管理 - seccomp - seccomp とは?
71 Copyright © 2025, Oracle and/or its affiliates • Linuxカーネルのセキュリティモジュール
• プロファイルを作成して、読み取り、書き込み、プログラムの実行やファイルシステムのマウントなど、システム機能を制限可能 • コンテナに許可することを制限可能 (例)bind-mountしたディレクトリ全体ではなく、個別のファイルやディレクトリに対して権限(RW)を設定可能。 Container Host Container bind-mount 権限設定可能 アクセス制御 高度な権限管理 - AppArmor - AppArmor とは? 対象が ファイルやリソースへのアクセス
72 Copyright © 2025, Oracle and/or its affiliates Kubernetes Node
AppArmor Profile Deny/** w Kubeletが AppArmorの Profileを読み込む Profileにある制限に反する実行要求は実行不可 $ touch /tmp/test AppArmorのProfileを使用するアノテーションを定義したマ ニフェストからPod作成 manifest AppArmorの Profileを作成と登録 ④ ③ ⑤ ※Kubernetes Version 1.4以上であること ※Node LinuxでAppArmor Kernel moduleが有効であること ② AppArmorが有効かを確認 ① アクセス制御 高度な権限管理 - AppArmor - AppArmorの使用例 ※ContainerRuntimeがAppArmorをサポートしていること ※参考:https://kubernetes.io/ja/docs/tutorials/clusters/apparmor/
アクセス制御 73 Copyright © 2025, Oracle and/or its affiliates 参考情報
https://bit.ly/ochacafe_archive2
アプリケーション、パッケージ管理、コンテナ 74 Copyright © 2025, Oracle and/or its affiliates
アプリケーション、パッケージ管理、コンテナ 75 Copyright © 2025, Oracle and/or its affiliates 書籍の概要
• アプリケーションの基本概念 • Linuxにおけるアプリケーションの起動とサービス • Linuxアプリケーションのサプライチェーン • パッケージ管理 • コンテナ技術 Linux 基礎知識 • モダンなアプリケーション管理 モダンなアプローチ
アプリケーション、パッケージ管理、コンテナ 76 Copyright © 2025, Oracle and/or its affiliates アプリケーションの基本概念
基本概念 概要 プログラム バイナリファイルかシェルスクリプトで、Linuxがメモリにロードして実行するもの。これらのことを実行 ファイルと呼ぶ。 プロセス メインメモリにロードされ、CPUまたはI/Oを使用し、スリープしていない状態の実行中のプログラム。 デーモン 他のプロセスに特定の機能を提供するバックグラウンドプロセス。デーモンプロセスの略で、サービス と呼ばれることもある。 アプリケーション 依存関係を含むプログラム。アプリケーションという用語に対して、プログラム、その構成、およびそ のデータのライフサイクル全体を含む。 パッケージ ソフトウェアアプリケーションを配布するために、プログラムと設定を1つにまとめたファイル。 パッケージマネージャ パッケージを入力とし、その内容とユーザの指示により、Linux環境にインストール、アップグレード、 または削除を行う管理プログラム。 サプライチェーン パッケージ単位でアプリケーションを探して利用できるようにする、ソフトウェア開発者や販売者の 集まり。 ブート カーネルのロードやサービス(デーモン)プログラムの起動など、ハードウェアとOSの初期化を行い、 Linuxを利用できる状態にすることを目的としたLinuxの起動シーケンス。
アプリケーション、パッケージ管理、コンテナ 77 Copyright © 2025, Oracle and/or its affiliates Linux
におけるアプリケーションの起動とサービス Linux の起動プロセス UEFI または BIOS ブートローダ カーネル Init 他のユーザー空間 ハードウェア カーネル空間 ユーザー空間 ① ② ③ ④ ⑤ POST(Power On Self Test)が完了した後、 UEFI(モダン) または BIOS(従来) がハードウェア を初期化して、ブートローダーに 制御を引き継ぐ。 ブートローダがカーネルをロード(ブートストラッ プ)。 従来:LILO、GRUB1 モダン:GRUB2、systemd-boot、 SYSLINUX、rEFIndなど サブシステム、ファイルシステム、 ドライバなどを初期化して、制御 をinit システム に引き継ぐ。 init システムが、システム全体の デーモン(サービスプロセス)を 起動。従来は initd 現在は systemd ユーザ空間レベルの初期化(ターミナル、環境、 シェル)
アプリケーション、パッケージ管理、コンテナ 78 Copyright © 2025, Oracle and/or its affiliates Linux
におけるアプリケーションの起動とサービス init から systemd systemd は init の直列実行や限定的機能を改善し、統一的で高速・多機能な起動管理システムとして現代の Linux の標準へ • ディストリビューションに依存しない起動を管理する統一された方法を提供 • 高速かつ理解しやすいサービス設定の実装 • 監視、(cgroupによる)リソース使用量の制御、ビルトインの監査などを含む、モダンな管理スイートを提供 これまでの init の欠点に対処
アプリケーション、パッケージ管理、コンテナ 79 Copyright © 2025, Oracle and/or its affiliates Linux
アプリケーションのサプライチェーン サプライチェーンとは? サプライチェーンは、製品を作ってから消費者に届けるまでの「つながり」のこと。 ソフトウェアでは、アプリが作られて利用者に使われるまでの仕組み。 ソフトウェアメンテナ 開発者、オープンソースプロジェクト、独立系ソフトウェアベンダ (ISV)などの企業で、ソフトウェア群を作成する人。 リポジトリ アプリの全部または一部をメタデータとともに含むパッケージの一覧。 ターゲットシステム ターゲットシステム側では、リポジトリからパッケージを検索し、ユーザー がアプリのインストール、アップデート、削除ができる。 パッケージと依存関係の管理には、従来のパッケージマネージャ、コンテナ ベースのソリューション、モダンなアプローチなど、多くの選択肢があり
アプリケーション、パッケージ管理、コンテナ 80 Copyright © 2025, Oracle and/or its affiliates パッケージ管理
Linuxのパッケージ管理とアプリケーションの依存管理の分類 Linux デスクトップユーザーが GUI アプリケーションを簡単に インストール
アプリケーション、パッケージ管理、コンテナ 81 Copyright © 2025, Oracle and/or its affiliates パッケージ管理
多くの Linux ディストリビューションでは、ソフトウェアをパッケージと呼ばれる単位で配布し、管理する仕組みを提供して います。 Red Hat 系のパッケージ管理として、rpm と yum/dnf、 Debian 系のパッケージ管理として、dpkg と apt-get が あります。 Linux では、自分でソースをコンパイルしてアプリケーションをインストールすることも可能です。 rpm yum/dnf dpkg apt-get
アプリケーション、パッケージ管理、コンテナ 82 Copyright © 2025, Oracle and/or its affiliates パッケージ管理
1.パッケージ管理システム 「パッケージ」を単位として、インストール/アンインストールを行う。 2.パッケージ ソフトウェアの実行ファイル、ドキュメントファイル、設定ファイル、インストール時に必要なスク リプトなどをまとめてアーカイブした1ファイル。 3.パッケージファイル形式 パッケージファイル形式 採用ディストリビューション Red Hat 形式(.rpm) Red Hat Enterprise Linux, CentOS, Fedora Debian 形式(.deb) Debian GNU/Linux, Ubuntu rpm と deb が主なパッケージ形式
アプリケーション、パッケージ管理、コンテナ 83 Copyright © 2025, Oracle and/or its affiliates パッケージ管理
4.パッケージ管理コマンド パッケージファイル形式 コマンド Red Hat形式(.rpm) rpm yum/dnf Debian形式(.deb) dpkg apt-get rpm と dpkg は主に個別にダウンロードしたパッケージのインストール時に使用、yum/dnf と apt-get はインターネッ ト経由で依存関係処理も自動化した高機能なパッケージ管理システムで利用するコマンドです。 yum → Python 2 系ベース、依存関係解決が遅め dnf → Python 3 / C ライブラリベースで高速・正確 yum → 古い設計のため制限がある dnf → プラグイン API が整理され、拡張しやすい yum と dnf
アプリケーション、パッケージ管理、コンテナ 84 Copyright © 2025, Oracle and/or its affiliates パッケージ管理
rpm パッケージをマシンにインストール流れ(rpm の場合) ※ deb パッケージも同じ流れで、dpkg コマンドでインストール wgetコマンド等でイン ストールしたい RPM パッケージをマ シンにダウンロード。 パッケージをインストール。 「yum install」でリポジトリ から必要となる RPM パッ ケージをダウンロード。 パッケージをインストール。 rpmパッケージをマシンにインストール流れ(yum/dnf の場合) ※ deb パッケージも同じ流れで、apt-get コマンドでインストール となります。
アプリケーション、パッケージ管理、コンテナ 85 Copyright © 2025, Oracle and/or its affiliates コンテナ技術
Linux の namespace、cgroup、オプションでコピーオンライトファイルシステムを使用してアプリケーションレベルの依存 関係の管理を行うプロセスのグループと定義。 Control Gropupsは、プロセスに対してハード ウェアリソースの制御。プロセスに対して共有可能 な物理リソースの割り当て、優先度設定などの細 かい管理を行う。 コンテナごとに namespace が作成されて、ユー ザー空間を分離。コンテナで利用される namespace には、IPC、マウント、ネットワーク、 PID、ユーザーがある。
アプリケーション、パッケージ管理、コンテナ 86 Copyright © 2025, Oracle and/or its affiliates コンテナ技術
コンテナランタイムと Linux カーネルの機能(namespace, cgroup)を利用してコンテナを作成して、コンテナイメージを 元にアプリケーションを稼働させるオープンソースソフトウェア。
アプリケーション、パッケージ管理、コンテナ 87 Copyright © 2025, Oracle and/or its affiliates コンテナ技術
アプリケーション、パッケージ管理、コンテナ 88 Copyright © 2025, Oracle and/or its affiliates コンテナ技術
アプリケーション、パッケージ管理、コンテナ 89 Copyright © 2025, Oracle and/or its affiliates コンテナ技術
イメージの読み取り専用レイヤー + 書き込み可能なレイヤー 変更は全て書込みレイヤーに記録される。この仕組みがコピーオンライト。
アプリケーション、パッケージ管理、コンテナ 90 Copyright © 2025, Oracle and/or its affiliates モダンなアプリケーション管理
モダンなパッケージマネージャ Snap や Flatpak のようなコンテナ的アプローチ、クロスディストリビューションや特定の環境をターゲット アプリA アプリB アプリC ホストOSのライブラリ群を共有 従来型パッケージマネージャ アプリ A + 依存ライブラリ アプリ B + 依存ライブラリ アプリ C + 依存ライブラリ モダン型(Snap / Flatpak 等) ※依存関係が競合しやすい ※ホストに依存せず動作可能 ホストOSのライブラリに依存するため、依存 関係の競合やディストリビューションごとの パッケージ作成の必要。 必要な依存関係を自前で保持し、コンテ ナ的サンドボックスで実行されるため、環境 差に左右されない共通パッケージの利用。
高度なトピック & モダンLinuxツール 91 Copyright © 2025, Oracle and/or its
affiliates
高度なトピック & モダンLinuxツール 92 Copyright © 2025, Oracle and/or its
affiliates 書籍の概要 • モダンなLinuxディストリビューション • その他のモダンLinuxの話、あるいは将来の話 • モダンLinuxツールやコマンド モダンなアプローチ
高度なトピック & モダンLinuxツール 93 Copyright © 2025, Oracle and/or its
affiliates モダンなLinuxディストリビューション 名称 開発主体 特徴 主な用途 利用範囲 Red Hat Enterprise Linux CoreOS Red Hat OpenShift 専用に最適化されたコンテ ナ OS。 自動更新と強化されたセキュリティを備え、 クラスタ全体で一貫性を維持可能。 企業向けの OpenShift クラスタ運 用 OpenShift クラスタ専用 (単体利用は想定外) Flatcar Container Linux Kinvolk(現 Microsoft 傘下) CoreOS 後継の軽量 OS。自動更新と セキュリティ修正が標準で、クラウド/ベア メタル両対応。特定クラウドに依存しない 柔軟さが特徴。 ベンダーロックインを避け たコンテナ基盤 クラウド/オンプレ/ベアメタ ルいずれも利用可 Bottlerocket AWS コンテナ専用に設計された OS。必要最 小限の構成で安全性を高め、イメージ単 位の更新とロールバックが可能。AWS サービスと強力に統合。 Amazon EKS/ECS 上のコンテナ運用 EKS/ECS に最適化。スタ ンドアロン利用も可能だが 自己管理が必要 コンテナ稼働に特化したOSを紹介
高度なトピック & モダンLinuxツール 94 Copyright © 2025, Oracle and/or its
affiliates その他のモダンLinuxの話、あるいは将来の話 関数型のアプローチに基づいたコードベースの Linux ディストリビューション
高度なトピック & モダンLinuxツール 95 Copyright © 2025, Oracle and/or its
affiliates その他のモダンLinuxの話、あるいは将来の話 NixOSの特徴 NixOS は、独自の Nix というパッケージ管理システムを使った Linux ディストリビューションで、 最大の特徴は、設定やパッケージを全て宣言的に管理できる、つまり、「この状態にしたい」と書けば、OS がその通りに 構築される。 不変性(イミュータブル):アップデートや変更は新しい世代として保存され、失敗したら簡単にロールバック可能 再現性:同じ設定ファイルから、どの環境でも同じシステムを構築可能 柔軟性:複数バージョンのソフトを同時にインストール可能
高度なトピック & モダンLinuxツール 96 Copyright © 2025, Oracle and/or its
affiliates その他のモダンLinuxの話、あるいは将来の話 NixOS における設定の流れ NixOS では、システム全体の設定を /etc/nixos/configuration.nix というファイルに記述、これが「管理する コード(宣言)」。 { config, pkgs, ... }: { # ホスト名 networking.hostName = "my-nixos"; # SSH サーバを有効化 services.openssh.enable = true; # インストールするパッケージ environment.systemPackages = with pkgs; [ vim git firefox ]; # ユーザーの作成 users.users.alice = { isNormalUser = true; extraGroups = [ "wheel" ]; # sudo 権限 password = "password"; # 本番ではハッシュ推奨 }; } $ sudo nixos-rebuild switch • switch → 設定を反映して即座に新しい環境に切り替える • test → 一時的に新しい設定を試す(再起動すると元に戻る) • boot → 次回の再起動から新しい設定を有効化する ※ロールバックは、再起動して GRUB メニューから以前の世代 (generation)を選択するか、以下のコマンドで対応 sudo nixos-rebuild switch --rollback
高度なトピック & モダンLinuxツール 97 Copyright © 2025, Oracle and/or its
affiliates その他のモダンLinuxの話、あるいは将来の話 個人的な NixOS への未来 「宣言的(declarative)」とは、「最終的にどういう状態にしたいか」をコードで書くこと Terraformであれば、HCLによるTFファイル、Kubernetesであればマニフェストと同じ捉え方ができる! OS を宣言的にコードで管理できるのであれば、Ansible での構成管理を吸収できる可能性はあるかも?
高度なトピック & モダンLinuxツール 98 Copyright © 2025, Oracle and/or its
affiliates モダンな Linux ツールやコマンド コマンド 機能 bat cat のモダンな代替。シンタックスハイライトや行番号、Git 連携表示などを備える。 envsubst シェル変数(環境変数)を文字列中で展開するコマンド。環境変数を含むテンプレート処理に便利。 exa ls のモダンな代替。カラー表示やツリー構造、Git ステータスなどの追加情報を表示可能。 dog dig のモダンな代替。DNS クエリを分かりやすくフォーマット表示し、使いやすいインターフェースを提供。 fx JSON ビューワ。インタラクティブに JSON データをナビゲート・編集できる CLI ツール。Node.js 製。 fzf インタラクティブなファジーファインダー。パイプ入力や履歴、ファイル検索など様々な CLI 操作に活用できる。 gping ping のモダン版。複数ホストを並列で ICMP ping し、リアルタイムにグラフで表示。 httpie curl より人間に優しい HTTP クライアント。直感的な構文で REST API を簡単に操作できる。 jo JSON 形式のデータをシェルスクリプトから簡単に生成できる CLI ツール。jq と組み合わせて使うと便利。 jq JSON パーサー兼フィルター。複雑な JSON 構造を整形・抽出・変換できる強力なツール。 rg grep の高速な代替。デフォルトで .gitignore を尊重し、再帰検索に最適。 sysz sysz は、systemctl を視覚的に操作できるターミナルツール。 tldr 簡潔なコマンドの使い方サマリーを提供するツール。初心者でもすぐ理解できる例を多く含む。 zoxide cd の高度な代替。アクセス頻度に基づくジャンプや、ファジーマッチを活用してディレクトリ移動を高速化。
高度なトピック & モダンLinuxツール 99 Copyright © 2025, Oracle and/or its
affiliates モダンな Linux ツールやコマンド 動画でモダンなコマンドを紹介している以下サイトも是非!! https://github.com/ibraheemdev/modern-unix
Thank you Copyright © 2025, Oracle and/or its affiliates 100
None