Upgrade to Pro — share decks privately, control downloads, hide ads and more …

お昼にサクッと学んで午後からすぐ活かす Linux基礎 ~権限からパッケージ管理まで~

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Umehara Umehara
October 20, 2025
30

お昼にサクッと学んで午後からすぐ活かす Linux基礎 ~権限からパッケージ管理まで~

実務でなんとなく使ってるlinuxコマンドについてちゃんと理解していますか?

AIエージェントの利活用が進む中、AIが打つコマンドや生成したシェルスクリプトの意味を理解しないまま使うことは重大なリスクになります。

この勉強会では、そんな基礎的だけど重要なLinuxの基礎について、ランチタイムでサクッと理解(おさらい)して午後の業務から早速使ってもらえるような内容を目指します。

Avatar for Umehara

Umehara

October 20, 2025

Transcript

  1. Linuxにおけるユーザーとグループについて
 • Linux → マルチユーザーシステム(loginが必要)
 • ユーザーは主に3種類
 ◦ 一般ユーザー
 ◦

    root(特権ユーザー) 
 ◦ システムユーザー
 • ユーザーをまとめるグループ
 • 各ユーザーは必ず1つのプライマリグループに属する必要がある。
 ユーザー
 グループ

  2. sudoコマンド
 • sudo → 「superuser do」、「switch user do」、「substantial user do」


    ◦ 他のユーザー(特権ユーザー)として実行するコマンド 
 • /etc/sudoersファイルで管理
 ◦ sudoersファイルに設定が記載されていないとsudoコマンドが使えない。 
 ◦ 例えば下の例だとadminとsudoグループのユーザー以外はsudoでroot権限(もちろん別のユーザーやグルー プにもなれない)が使えない 

  3. sudoersファイル
 /etc/sudoersファイルで管理
 ◦ who  where   =  (as_whom)   what 
 ◦ 誰が どこで = (誰として:どのグループとして)

    何を実行できるか 
 ◦ 例: rootユーザーは全てのホストで全てのグループに属する全てのユーザーとして全てのコマンドを実行できる 

  4. ファイルの権限管理
 • linuxの各ファイルには権限が割り当てられている = mode
 ◦ r: 読み取り
 ◦ w:

    書き込み
 ◦ x: 実行
 • 権限は、所有者、所有者と同じグループのユーザー、その他のユーザー それぞれに定義されている。
 種類
 d: ディレクトリ
 -: 通常のファイル
 l: リンク
 所有者
 グループの ユーザー
 その他の ユーザー

  5. • modeは2進数表記と8進数表記
 • ls -lで表示されるていたのは2進数表記のモード
 • モードは3*桁で表されるので8進数表記で1つの数字にまとめられる。
 ◦ 2進数 →

    rwx (= 111) 
 ◦ 8進数 → 7 (2^2 × 1 + 2 × 1 + 1) 
 
 modeの表記
 所有者
 グループの ユーザー
 その他の ユーザー
 7
 5
 5

  6. クイズ
 Q: 「読み込み・実行だけを許可」の2進数、8進数表記はそれぞれ何?
 A: 2進数: r-x, 8進数: 5
 r =

    2^2 × 1 = 4
 w = 2 × 0 = 0
 x = 1 × 1 = 1
 足し合わせて、8進数表記は5になります。

  7. 復習: modeと実効ユーザー
 • 実は8進数のファイルのmodeは3桁ではなく4桁
 • 普通のファイルの権限, 775, 777は正確には0775, 0777である。
 •

    では4桁目は何を表すか?
 ◦ 4桁目は特殊パーミッション と呼ばれる
 • 特殊パーミッション の設定は
 ◦ 4 setuid 実効プロセスを所有者として実行 
 ◦ 2 setgid 実効プロセスを所有グループとして実行 
 ◦ 1 sticky ディレクトリの中身を消せるのは所有者(グループ)かrootのみ 

  8. プロセスの状態
 コード 意味 説明 R Running (実行中) CPUを現在使用しているか、実行を待っている状態 S Interruptible

    Sleep (スリープ中) 何らかのイベント(入力待ちなど)が発生するのを待機する状態 T Stopped (停止中) Ctrl+Z などで一時停止させられた状態 s Session Leader (セッションリーダー ) 他のプロセスグループを管理するプロセス + Foreground (フォアグラウンド ) ターミナルの手前で実行されている、直接操作可能なプロセスグループ
  9. kill コマンド
 • kill ≠ processを⚪すコマンド
 • 正確にはシグナルを送るコマンド
 • シグナル

    = プロセスにイベントを通知するための信号
 ◦ CTRL + Cなど
 • シグナルの一覧はkill -lで見れる

  10. プロセスの親子関係
 • fork()によってプロセスをコピー、execでプロセスで実行
 
 • exit()でプロセスの終了。親はwaitで子プロセスの終了を待つ。
 
 • 全てのプロセスの親はinit (pid

    = 1)
 例えばsystemdなど。プロセス管理を担当
 引用: ふつうのLinuxプログラミング 第2版 Linuxの仕組みから学べるgccプログラミングの王道
 
 fork
 fork
 init

  11. ゾンビプロセス
 • ゾンビプロセスとは
 ◦ 本当はもう終了して( ⚪んで)いるのに生きていることになっているプロセス 
 
 • ゾンビプロセスが引き起こす問題:

    プロセステーブルの枯渇
 
 • Linuxカーネルはプロセステーブルを使って起動中のプロセスを管理
 
 • 起動できるプロセス数には上限があり、ゾンビプロセス
 だらけになると新たにプロセスが作れなくなる
 

  12. ゾンビプロセスが問題になるとき
 • PID=1が/bin/bashになってる!(systemdではない!)
 
 • なぜならDockerコンテナを使っていたから!
 
 • Dockerでは起動コマンドで指定したコマンドがPID=1となる
 


    • docker run --rm -it ubuntu:latest /bin/bash 
 • Dockerで複数プロセス立ち上げるとゾンビプロセスが発生した時に刈り取られず問 題になることがある
  13. シェル(リダイレクト、パイプ)
 • > : リダイレクト
 ◦ 出力先を指定する。 
 ◦ 例:

    echo hoge > hoge.txt (hoge.txtにhogeを記入) 
 ◦ > は上書き、>>は追記 
 • | : パイプ
 ◦ 標準出力を次のコマンドの標準入力に付け替える。 
 ◦ history | grep docker (コマンド履歴(history)の中からdockerという文字列でフィルタ) 

  14. シェル(リダイレクト、パイプ)
 • >とか2>&1とか何やってるの?
 • 数字の意味 = ファイル識別子(ファイルを指すポインタのようなもの)
 ◦ 0: 標準入力(シェルからの入力)

    
 ◦ 1: 標準出力 → 端末に繋がっておりシェルで見れる 
 ◦ 2: 標準エラー出力 → 端末に繋がっておりシェルで見れる 
 • 標準出力と標準エラー出力の違い
 ◦ 標準出力 → (|)を使って次のコマンドに渡される可能性。エラーが起きても人がわからない 
 ◦ 標準エラー出力 → 確実に人が読む。 
 • エラーメッセージはprintしない方が良い

  15. package管理 (apt)
 • apt = advanced package tool
 ◦ よく似たコマンドにapt-getがあるが、実はaptの方が新しく使える便利なコマンドも多い

    
 • リポジトリ: 各パッケージが保管されているサーバー
 • /etc/apt/sources.listにリポジトリの情報が記載されている
 ◦ リポジトリにはデフォルトで設定されているものの他にミラーサーバーといった公式のコピーサー バーや独自のサーバーを追加できる 
 • /var/lib/apt/lists/以下にリポジトリに登録されているpackageの情報が保存され ている

  16. 例: (一昔前の)cudaのインストール方法
 (最近までcudaはaptの公式リポジトリに登録されていなかったため、nvidiaのリポジトリを 登録してそこからインストールする必要があった。)
 • wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
 • sudo mv

    cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
 • sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
 • sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
 • sudo apt-get update
 • sudo apt-get -y install cuda
 
 

  17. aptリポジトリやパッケージの優先順位付け
 wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
 sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
 を実行すると以下のファイルが、 /etc/apt/preferences.dに配置される。
 


    
 nsight-computeとnsight-systems パッケージはubuntu.comからは絶対に インストールしない(Pin-Priority:-1)
 全てのパッケージは優先度600で NVIDIA CUDAラベルのリポジトリか らインストールする (デフォルトの優 先度は500)