最近、Linuxに関する書籍を読みました。
理由は、以前の記事でLinuxサーバーのセキュリティについて書きましたが、自分自身、まだ知らないことが多いと感じたためです。また、仕事でGoogle Cloudを使用する際は、すでに初期セットアップされたLinuxを利用するため、改めて基本からしっかりと知識を身につけたいと考えたからです。
この入門講座では、複数回に分けて、私がLinuxを学び直した知識をアウトプットしていきます。
ぜひ、最後までご覧いただけると嬉しいです!
Linuxの概要と特徴
Linuxは、オープンソースのUNIX系オペレーティングシステム(OS)であり、世界中の個人や企業で広く利用されています。1991年にフィンランドのリーナス・トーバルズ(Linus Torvalds)によって開発が始まり、現在ではUbuntu、CentOS、Debianなど、多くのディストリビューションが存在します。
Linuxは、安定性・柔軟性・セキュリティ性 に優れ、サーバー、組み込みシステム、クラウド環境、さらには個人のデスクトップ用途まで幅広く活用されています。特に、オープンソースであるため、誰でも無料で利用・改良できる点が大きな特徴です。
次のセクションでは、Linuxのディストリビューションについて詳しく説明します。
Linuxの主なディストリビューション
Linuxディストリビューションとは、Linuxカーネルにさまざまなソフトウェアやツールを組み合わせて提供されるパッケージのことを指します。ディストリビューションごとに特徴が異なり、用途や目的に応じて選択できます。
代表的なディストリビューションには以下のようなものがあります。
- Ubuntu:初心者にも使いやすいデスクトップ向けディストリビューション。サーバー用途にも対応。
- Debian:安定性が高く、サーバーや開発環境として人気。Ubuntuのベースにもなっている。
- CentOS / Rocky Linux:Red Hat Enterprise Linux(RHEL)と互換性があり、エンタープライズ用途に最適。
- Arch Linux:上級者向けのローリングリリース型ディストリビューションで、カスタマイズ性が高い。
- Fedora:最新技術を積極的に取り入れるディストリビューションで、RHELの開発元であるRed Hatが支援。
私は普段からDebianを使用しています。その理由は、Google CloudのCompute Engineで仮想マシン(VM)をデプロイする際、初期OSとしてDebianが提供されているからです。
Linuxディストリビューションは、目的やスキルレベルに応じて適切なものを選択することが重要です。
次のセクションでは、Linuxの活用分野について解説します。
Linuxの活用分野
Linuxは、その柔軟性と安定性から、多様な分野で広く活用されています。以下に代表的な活用例を紹介します。
- サーバー運用
Linuxは、ウェブサーバー、データベースサーバー、ファイルサーバーなど、さまざまなサーバー用途で広く利用されています。ApacheやNginxを用いたウェブサーバー運用、MySQLやPostgreSQLを使用したデータベース管理など、多くの企業やクラウドサービスで採用されています。 - クラウドコンピューティング
Google Cloud、AWS、Microsoft Azureなどの主要なクラウドプラットフォームでは、Linuxベースの仮想マシンが一般的に利用されています。軽量かつ安定したOSであるため、大規模なクラウドインフラの基盤として適しています。 - 組み込みシステム
Linuxは、ルーター、スマート家電、IoTデバイスなどの組み込みシステムにも使用されています。特にAndroidはLinuxカーネルをベースにしたOSであり、スマートフォンやタブレットにも広く採用されています。 - ソフトウェア開発
開発者向けの環境としてもLinuxは人気があります。オープンソースソフトウェアの開発や、Python、C/C++、Go言語などのプログラミング環境の構築に最適です。また、コンテナ技術(DockerやKubernetes)を活用した開発にも適しています。 - デスクトップ環境
近年では、UbuntuやFedoraなどの使いやすいディストリビューションを利用し、個人のデスクトップ環境としてLinuxを使用するケースも増えています。オープンソースのアプリケーションを活用し、プライバシー重視の環境を構築できます。
Linuxは、サーバーから個人利用まで幅広い用途で活用できる強力なOSです。目的に応じたディストリビューションを選択し、最適な環境を構築することが重要です。
Linuxの動作環境と実行方法
Linuxは多様な環境で動作し、用途に応じて適切な実行方法を選択できます。ここでは、主なLinuxの実行環境について紹介します。
- 物理マシン(ベアメタル環境)
Linuxを直接ハードウェアにインストールし、スタンドアロンの環境として使用する方法です。デスクトップPCやサーバーに導入し、最大限のパフォーマンスと安定性を求める場合に適しています。 - 仮想マシン(Virtual Machine, VM)
仮想化技術を利用して、Linuxを他のOS上で動作させる方法です。VirtualBox、VMware、KVM(Kernel-based Virtual Machine)などの仮想化ソフトウェアを使用し、複数のLinux環境を一台のマシンで管理できます。開発やテスト環境の構築に適しています。 - コンテナ環境
DockerやPodmanなどのコンテナ技術を活用し、軽量なLinux環境を構築できます。コンテナはホストOSのカーネルを共有しつつ、個別の環境を提供するため、リソース管理が効率的です。Kubernetesと組み合わせることで、大規模なクラウド環境にも対応できます。 - クラウド環境
AWS(Amazon Web Services)、Google Cloud、Microsoft Azureなどのクラウドプラットフォームでは、多くのLinuxベースの仮想マシンイメージが提供されています。クラウド環境を利用することで、オンデマンドでLinuxサーバーを構築し、必要に応じてスケールアップやスケールアウトが可能です。 - Windows上でのLinux実行(WSL)
Windows Subsystem for Linux(WSL)を使用すると、Windows環境内でLinuxを直接実行できます。WSL 2では、Linuxカーネルを搭載した仮想化環境が提供され、ネイティブなLinux環境に近い形で使用できます。特に開発者向けの用途として人気があります。
Linuxは、物理マシンから仮想環境、クラウド、コンテナまで、さまざまな方法で利用可能です。目的に応じて適切な環境を選択し、効率的なシステム運用を行うことが重要です。
Linuxの操作環境とログイン方法
Linuxでは、主にCUI(Character User Interface)とGUI(Graphical User Interface)の2つの操作環境が提供されており、用途に応じて使い分けることができます。また、システムにアクセスするためのログイン方法も重要な要素です。ここでは、それぞれの環境とログイン方法について解説します。
1. CUI環境(Character User Interface)
CUIとは、文字ベースのインターフェースを指し、コマンドを入力してシステムを操作する環境です。Linuxの基本操作はCUIで行われることが多く、特にサーバー管理やシステム設定で重要な役割を果たします。
主な特徴
- 軽量でリソース消費が少ない
- SSH(Secure Shell)を利用したリモート操作が可能
- 高度なシステム管理や自動化が容易
代表的なシェル(コマンドライン環境)
- Bash(Bourne Again Shell):多くのLinuxディストリビューションでデフォルト
- Zsh(Z Shell):高機能な拡張を提供
- Fish(Friendly Interactive Shell):直感的な操作が可能
CUI環境でのログイン方法
- ローカルログイン:Linux端末のコンソールでユーザー名とパスワードを入力
- リモートログイン:SSHを利用してリモートのLinuxサーバーに接続
例:ssh user@example.com
このコマンドで、リモートのLinuxサーバーへログインできます。
2. GUI環境(Graphical User Interface)
GUIとは、視覚的に操作できるウィンドウやボタンを備えたインターフェースを指します。Linuxでは、さまざまなデスクトップ環境(DE : Desktop Environment)が用意されており、用途や好みに応じて選択できます。
主なデスクトップ環境
- GNOME:シンプルで直感的な操作性を提供
- KDE Plasma:カスタマイズ性が高く、多機能
- Xfce:軽量で古いPCにも適用可能
- LXQt:さらに軽量でシンプルな環境
GUI環境でのログイン方法
GUIのログインにはディスプレイマネージャ(GDM, SDDM, LightDM など)を使用し、ユーザー名とパスワードを入力してログインします。
3. ログイン方法の種類
Linuxでは、ローカルログインとリモートログインの2つの方法があります。
- ローカルログイン(直接ログイン)
- GUI環境:ログイン画面からユーザー名とパスワードを入力
- CUI環境:ターミナル上でユーザー名とパスワードを入力
- リモートログイン(ネットワーク経由でアクセス)
- SSH(Secure Shell):CUI環境でリモートログイン
- X11 forwarding や VNC:GUI環境をリモートで操作
Linuxでは、CUIとGUIの両方の環境を適切に活用し、シチュエーションに応じた効率的な操作が求められます。初心者はまずGUI環境で慣れ、徐々にCUI環境を活用できるようになると、より柔軟なシステム運用が可能になります。
Linuxのユーザー管理と権限
Linuxでは、ユーザーアカウントによってシステムへのアクセス権限が異なります。特に重要なのが、管理者権限を持つ root ユーザーと、制限付きの権限を持つ一般ユーザーの区別です。適切なユーザー管理を行うことで、セキュリティを確保し、システムの安定性を維持できます。
1. rootユーザー(管理者権限)
rootユーザーは、Linuxシステム全体を管理できる特権を持つアカウントです。Windowsの「Administrator」に相当し、以下のような操作が可能です。
主な権限と特徴
- すべてのコマンドを実行可能
- システムの設定変更やソフトウェアのインストールが可能
- 他のユーザーアカウントやファイルシステムの管理が可能
- 誤操作によるシステム破壊のリスクがある
root権限を使う方法
一般ユーザーが一時的にroot権限を使うには、sudo コマンドを使用します。
sudo apt update # Debian系のパッケージリスト更新
sudo yum update # RHEL系のパッケージリスト更新
また、rootユーザーに切り替える場合は、以下のコマンドを実行します。
su -
ただし、root権限を持つユーザーの操作は慎重に行う必要があります。
2. 一般ユーザー(通常の利用者)
一般ユーザーは、システム管理に関する特権を持たない制限付きのアカウントです。通常、個々のユーザーごとにホームディレクトリが割り当てられ、基本的なファイル操作やアプリケーションの実行が可能です。
主な権限と特徴
- 自分のホームディレクトリ(例: /home/user)内での操作が可能
- システム全体に影響を与えるコマンドの実行は不可
- 誤操作によるシステム破壊のリスクが少ない
現在のユーザーを確認するコマンド
whoami
新しい一般ユーザーの作成
管理者権限で以下のコマンドを実行すると、新しいユーザーを作成できます。
sudo adduser newuser # Debian系
sudo useradd -m newuser # RHEL系
3. root権限の適切な使用(sudoの活用)
セキュリティ上の観点から、rootユーザーでの作業は極力避け、必要なときだけ一時的にroot権限を利用するのが推奨されます。そのため、多くのLinuxディストリビューションでは、sudo コマンドを利用して一般ユーザーが管理者権限を取得できるようになっています。
一般ユーザーにsudo権限を付与するコマンド
sudo usermod -aG sudo ユーザー名 # Debian系
sudo usermod -aG wheel ユーザー名 # RHEL系
sudo を使うことで、root権限の誤用を防ぎ、安全なシステム運用が可能になります。
4. Linuxのユーザー管理と権限のまとめ
Linuxでは、rootユーザーと一般ユーザーを適切に使い分けることが重要です。
- rootユーザーはシステム管理に不可欠ですが、誤った操作によるリスクも伴うため、日常の作業には使わない。
- 一般ユーザーでの作業を基本とし、必要に応じて sudo を利用して管理者権限を行使する。
こうしたユーザー管理を徹底することで、Linuxの安全性と安定性を確保できます。sudo
を利用するのが基本的な運用方法です。こうした管理を徹底することで、Linuxの安全性と安定性を確保できます。
Linuxのコマンドの基本と活用
Linuxでは、基本的な操作をコマンドラインで実行します。コマンドの実行構文を理解することで、より効率的にLinuxを操作できるようになります。本記事では、Linuxの基本的なコマンドの書き方や使い方について解説します。
1. コマンドの基本構文
Linuxのコマンドは、以下の基本的な構文で実行されます。
コマンド [オプション] [引数]
- コマンド:実行する処理(例: ls, cd, mkdir など)
- オプション:コマンドの動作を変更する設定(例: -l, -a, –help など)
- 引数:コマンドの対象となるファイルやディレクトリ(例: file.txt, /home/user など)
例: ls コマンド(ディレクトリの内容を表示)
ls -l /home/user
- ls:ディレクトリの内容を表示
- -l:詳細な情報を表示(オプション)
- /home/user:指定したディレクトリ(引数)
2. よく使われる基本コマンド
下記に、Linuxでよく使わる基本コマンドを記載します。
コマンド | 説明 | 使用例 |
ls | 指定したディレクトリの内容を表示 | ls -a (隠しファイルも表示) |
cd | ディレクトリを移動 | cd /etc (/etc に移動) |
pwd | 現在のディレクトリを表示 | pwd |
mkdir | 新しいディレクトリを作成 | mkdir test |
rm | ファイルやディレクトリを削除 | rm -r test (test フォルダを削除) |
cp | ファイルをコピー | cp file1.txt file2.txt |
mv | ファイルを移動または名前変更 | mv old.txt new.txt |
cat | ファイルの内容を表示 | cat file.txt |
3. コマンドのヘルプを確認する方法
Linuxでは、各コマンドの使い方を調べる方法が複数あります。
① –help オプションを使う
簡単な説明やオプションの一覧を表示します。
ls --help
② man コマンド(マニュアルを表示)
コマンドの詳細なマニュアルを表示します。終了するには q を押します。
man ls
③ info コマンド(詳細情報)
より詳しい情報を表示する場合に使用します。
info ls
4. コマンドの組み合わせ(パイプとリダイレクト)
① パイプ (|) を使ってコマンドを連携
パイプ (|) を使うと、1つのコマンドの出力を別のコマンドの入力として渡すことができます。
ls -l | grep "txt"
このコマンドは、カレントディレクトリ内の txt ファイルのみを表示します。
② リダイレクト (>, >>, <) を使ってファイルに出力
記号 | 説明 | 使用例 |
> | 出力をファイルに上書き保存 | ls > filelist.txt |
>> | 出力をファイルに追記 | ls >> filelist.txt |
< | ファイルの内容を入力として使用 | sort < names.txt |
5. コマンドの履歴を活用する
過去に実行したコマンドを確認するには、history コマンドを使用します。
history
特定のキーワードを含む履歴を検索する場合は、grep を組み合わせます。
history | grep "ls"
また、直前のコマンドを再実行するには、!! を使用します。もしくは、キーボードの↑(上矢印)キーを押すと、直前に実行したコマンドを1つずつ遡ることができます。
!!
6. Linuxのコマンドの基本と活用のまとめ
Linuxのコマンドは、「コマンド名」+「オプション」+「引数」 で構成されます。適切なオプションを指定することで、さまざまな操作が可能になります。
- 基本的なコマンドの構文を理解する
- ヘルプやマニュアルを活用してコマンドの詳細を確認する
- パイプやリダイレクトを活用して効率的にコマンドを組み合わせる
- 履歴を活用して作業を効率化する
こうした基本を押さえることで、Linuxの操作がスムーズになり、より高度なコマンドの活用へとつなげることができます。り柔軟な処理を行うことができます。基本的なコマンド操作を習得することで、Linuxの操作をスムーズに行えるようになります。
まとめ
本日は、下記7点について説明しました。
- Linuxの概要と特徴
- Linuxの主なディストリビューション
- Linuxの活用分野
- Linuxの動作環境と実行方法
- Linuxの操作環境とログイン方法
- Linuxのユーザー管理と権限
- Linuxのコマンドの基本と活用
Linuxは、様々なディストリビューションがあり、目的や用途に応じて使用するディストリビューションが異なります。また、Linuxは、基本、コマンドで実行するOSであり、ユーザーの種類によって、実行できるコマンドが異なります。今回の記事を参考にして、みなさんもLinuxを使い始めてください!
これからも、Macのシステムエンジニアとして、日々、習得した知識や経験を発信していきますので、是非、ブックマーク登録してくれると嬉しいです!
それでは、次回のブログで!