前回はラズパイ4のOS「bullseye」の作成・インストールから日本語入力環境の設定まで行いました。
本記事では、Linux コマンド入力経験がゼロの方も、
- 「基本的には最低限のコピー&貼り付けで済ませるサーバ構築」
という方向性の下、
を目指しているので、
その範囲内で使うLXTerminalコマンドに絞って一覧にしています。
私自身、その程度しかサーバ構築に求めていないため、
サーバ構築しながら確認のために本記事に訪れて頂ければ、
という趣旨で書いております。
Linuxコマンドを知るために有益なページ
プログラムやシステムのプロでもない私が申すのもおこがましいのですが、
ラズパイOSはDebianベースなので、GNOMEやDebian公式サイトが1次情報になると思っています。
以下のページにてTerminal(端末)入門が始まります。
- GNOME Terminal Help: https://help.gnome.org/users/gnome-terminal/stable/index.html.en
- Debian公式 主なコマンド一覧: https://wiki.debian.org/coreutils
- Debian公式日本語チュートリアル: https://www.debian.org/doc/manuals/debian-reference/
- Debian公式マニュアル: https://manpages.debian.org
ラズパイはDebianで使われるコマンドのほとんどが使えるので[1]Linux ディストリビューションによっては、modifiedされたコマンドに遭遇することがあります。、
Google検索などでラズパイコマンドを探し回るよりは、上記リンク先のドキュメント内で検索するほうが、
目的のコマンドを早く見つけられ、検索疲れも軽減できると思います。
なぜターミナルが必要なのか?
- Raspberry Pi Foundation によるLXTerminalの公式ページ:
https://projects.raspberrypi.org/ja-JP/projects/raspberry-pi-using/8 - ラズパイが採用しているデスクトップ環境 LXDE 公式ページ:
https://www.lxde.org/
Terminal(端末)を使う意義とは?
私は27年以上、Microsoft WindowsのGUIだけを使ってきました。コマンドプロンプトは一番遠い存在でした。
コマンド入力に縁遠い人間からすればラズパイを含むLinux操作は、
「なんで肩の凝るタイピングばかりをしなくてはならないのか?GUIではダメなのか?[2]厳密には、TerminalもGUI上で動くソフトなので、GUIの一部となります。完全なCLI(Command Line Interface)とは言えず、Terminal Emulators … Continue reading」
当初はそんな疑問を抱きました。
ところが、見様見真似で、Sambaサーバ・ローカルWordPress専用Webサーバを構築できるようになり、
ターミナルでファイル操作する重要さが私なりに理解できるようになってきました。
サーバはクライアントPCからのアクセス要求に対応するために、ファイルへのアクセス権限を明確に決定する必要があります。
- どのDocumentRootを開いて目的のファイルまでのアクセスを許可するのか?
- どの範囲のユーザー・グループを許可するのか?
- どの範囲のファイルアクセス権限(例:読み取り(r)・書き込み(w)・実行(x))を許可するのか?
など、許可する範囲を細かく限定する設定作業が必要となります。
この設定作業がGUI環境のデスクトップから安易に操作可能なら、誰でも書き換えが出来てしまいます。
これを実現するためにターミナル(端末)が存在している、と私は理解しています。
Linuxではファイルアクセスへの権限が厳格
Linuxでの権限とユーザー種類
Linuxではファイルアクセスへの権限を恒常的に意識して、操作していきます。
Windowsにも各ユーザーが有する権限がありますが、通常の使用ではあまり意識することは無いと思います。
この点の違いがWindowsユーザーにとって、面倒に感じ、Linuxへの理解の最初の敷居になっていると思います。
Linuxでの権限
- read: 読み取り(Read)
- write: 書き込み(Write)
- execute: 実行(eXecute)
ユーザー種類
- root: 上の権限を全て有し、全ての操作を実行できる最も強力な特権アカウント。詳細はDebian Wikiをどうぞ。
- 一般ユーザー:
- sudo権限を有する非rootユーザー:sudo権限を持つ一般ユーザー
- sudo権限を有さない非rootユーザー:sudo権限を持たない一般ユーザー
※ラズパイの場合は、OSインストール時に作成したユーザー(例: pi)は自動的にsudo権限を有しています。
rootとsudo権限を有した一般ユーザーを分ける理由は、
普段のラズパイ操作において、rootアカウントで長時間作業している間に乗っ取られると、あらゆる権限を奪われる危険性があるからです。
そのため、
「普段の作業は一般ユーザーとして行い、必要な場合に限って一般ユーザーがsudoコマンドを使ってラズパイを操作する。」
というセキュリティ面が考慮されています。
権限が無いとエラーが表示される実例
以下のように、
デスクトップ上でsudo能力のあるユーザーがラズパイGUIアプリから設定ファイルを編集しても、保存の際に、
「ディスク上のファイルは破損しているかもしれません!」
なんてエラーで脅しをかけられ、保存できない事態に頻繁に遭遇します。
しかし実際はファイル破損しておらず、
ターミナルからファイルを開くと、編集・保存できます。
ターミナルからこのファイルを操作するのが正攻法です。
エラーが表示された理由は「ファイルを変更する(書き込み・保存)権限はrootしか持っていないから」です。
GUIの場合、ファイルのプロパティから権限(パーミッション)を確認できます。
上画像のように、
- 所有者:root
- 内容の変更:所有者のみ
となっているので、rootユーザー以外はファイルに変更を加える権限を許可されていません。
そのため、sudo権限を持つ非rootユーザー(例:pi)として、
ターミナルでファイル変更を行う必要があります。
このように、ファイルへ変更を加えるために権限が細かく厳格に定められています。
そして、GUIで普段使いしていても、恒常的に権限と関わりを持つことを強いられます。
(権限の壁がありふれている点で、Windowsとは大きく異なります)
しかし、逆にいえば、
- Linuxはファイルアクセスをそれだけ慎重に考え、セキュリティ度を高めている
と、良いルールとして私は受け止めています[3]「Linuxはサーバ用途が多いOSなので複数ユーザーでの使用を前提としているため、ユーザー権限を厳格化している」、と目にしたことがあります。。
ターミナルを使わなくても
など、ラズパイを操作できますが、
権限の概念はGUIにおいても付いて回ってくるので、
「そういうものがあるんだぁ」
という程度でも心に留めておくと、
エラーに対処しやすくなると思います。
sudo 権限とは?
sudo: Super-user do の略とされています。rootユーザーが実行可能なコマンドを非rootユーザーも使用可能にするため権限を限定的に許可を付与するプログラム、コマンド。
下のように、行の先頭でsudo宣言します。
sudo 権限の基本思想
上のリンク先の意訳になりますが、
rootのまま作業するのは危険なので、
一般ユーザーが実務できる範囲内で特権を付与します。
但し、セキュリティ面から特権を少なくするのが基本的な思想です。
sudo 権限ユーザーの作成方法
ラズパイユーザーの方には直接的には関係ないのですが、私自身の備忘録も兼ねて、やり方を書き残します。
一般ユーザーをsudoグループに属すようにすると、sudo権限を有したユーザーを作成出来ます。
rootユーザーになってから行います。
# rootになる
su
# ユーザー pi をグループsudoに追加
gpasswd -a pi sudo
# sudoグループに追加された確認
groups pi
実体験としては、Debianを別PCにインストール直後に一般ユーザーはsudo権限を有していないのを知り、
上のコマンドを実行しました。
LXTerminalの起動方法
LXTerminalを起動するには、ランチャー(赤枠)をクリックします。
LXTerminalとの付き合いはサーバ構築までの1〜3日間までなので、
ほぼデフォルトのまま進めることにします[4]Terminalにも数多く種類があります。ラズパイはLXDEというデスクトップ環境なのでLXTerminalが採用されています。その他のTerminalはこちら。。
LXTerminalの基本コマンド一覧
- 先述で紹介したDebian公式サイトが分かりやすいと思います。
https://wiki.debian.org/coreutils
LXTerminalのコマンド入力方法
コマンドを1行入力後、Enterキーを叩くと実行されます[5]参照: GNOME HELP。
上矢印カーソルキーを叩くと、一つ前に入力したコマンドが表示されます。
異なる文字列のみ変更して、タイピング文字数を少なくする際に重宝します。
例: enableをstatusに変更するだけの場合
sudo systemctl enable ssh
とEnter入力後、上矢印カーソルキーを1回叩いて同じコマンドを表示させます。その後、enableをstatusに変更してEnter入力します。
sudo systemctl enable ssh
sudo systemctl status ssh
1行全てを入力せずに済むので、タイピング文字数を減らせます。
一番最初に覚えるコマンド
PC使用において、いつの時代でも電源OFFは最初に覚えるべき大事な操作、と個人的に思っております。
# 電源OFF
sudo shutdown -h now
# 再起動
sudo reboot
以下のコマンドはシングルユーザーモードからのシャットダウン[6]参照: GNU/Linux チュートリアル。
使っている例をあまり見かけないので、上述コマンドで十分だと思います(一人使用の範囲内では)。
sudo poweroff -i -f
システムのアップデート&アップグレードのコマンド
ラズパイOSセットアップ直後に行うコマンドです。
Linuxを使用する上で、毎日ほど頻繁に使います。
apt: Advanced Package Toolの略。
# アップデート
sudo apt update
# アップグレード
sudo apt upgrade
サーバ構築時によく使うコマンド
root化する
su: substitute user(代わりのユーザーの意)の略のようです。
# root化する前の現在ディレクトリを引き継ぐ
su
# ディレクトリを引き継かず、root home directory から始まる
su -
ラズパイで上のコマンドを使えない場合、
sudo su
と入力すると、root化できます。
インストール・アンインストール
サーバ構築するにあたり、容量は大きくないですが、6点ほどパッケージをインストールします[7]ufw, Samba, Apache2, MariaDB, PHP, WordPress, など。。
# インストール
sudo apt install パッケージ名
# アンインストール
sudo apt remove パッケージ名
# アンインストール(パッケージの設定ファイルも一緒に)
sudo apt purge パッケージ名
パッケージの正式な名称を知るには以下のコマンドで検索します。
apt search パッケージ名
ディレクトリを移動・配下の内容確認
cd: Change Directory.
ls: List.
# ディレクトリを移動
cd /ディレクトリ
# ディレクトリの内容をリスト化して表示
ls -la
ファイルを編集
エディタ nano を起動するコマンド。後ろに開きたいファイル名。
# ファイルの編集
sudo nano /ディレクトリ/ファイル名
ディレクトリを作成
mkdir: Make directory.
# ディレクトリ作成
sudo mkdir /ディレクトリ
ファイルやディレクトリを削除
rm: remove.
# ファイル削除
sudo rm /ディレクトリ/ファイル名
# ディレクトリ削除(配下のファイルも一緒に)
sudo rm -rf /ディレクトリ
ファイルやディレクトリの権限変更
chmod: Change mode.
chown: Change ownership.
# ファイルの権限変更
sudo chmod
# ファイルやディレクトリの所有権を変更
sudo chown
知っておいたほうが良いコマンド
pwd: Print working directory.
cat: Concatenate and write files. 推測ですが、黄色マーカー部分の略でしょうか?
cp: Copy.
# ターミナル画面が文字でいっぱいになったときに文字を一掃する
clear
# 現在のディレクトリを表示
pwd
# ターミナルを閉じる
exit
# ファイルの中身を表示する(編集はできない)
sudo cat /ディレクトリ
# ファイルやディレクトリをコピー
sudo cp コピー元のファイル名 /コピー先のディレクトリ
ファイル名を一括変更
ラズパイの場合は先にコマンドをインストールします。
sudo apt install rename
コマンドの書式は以下[8]出典:Linuxコマンド:renameの基本とオプション, IT求人ナビ, 2023.06.05閲覧。。
rename "s/置換前の文字列/置換後の文字列/;" ターゲットファイルの範囲
(例)「P_2023」から始まる画像ファイル全てを「2023_」から始まるようにする場合
rename "s/P_2023/2023_/;" P_2023*
LXTerminal の設定
フォントサイズを変更
1.編集>設定
2.端末のフォントをクリック。
3.サイズを変更。
フォント色を変更
1.編集>設定
2.前景色をクリック。
3.真っ白を選択すると、ターミナルの文字が読みやすくなります。
本記事内のコマンドはケース・バイ・ケースで、追加・更新する可能性があります。
サーバ構築を進めながら、不明時の確認目的で閲覧ください。
本記事がお役に立てれば嬉しく思います。
以下の記事も一緒にどうぞ。
- ラズパイOS (bullsey) のインストール・セットアップ
- LXTerminal のコマンド一覧(最低限)
- nano の操作方法(保存)
- ラズパイOSセットアップ直後の設定
- ラズパイIPアドレスの固定など
- ufw(ファイアウォール)設定
- SSH接続でラズパイをリモート操作
- Sambaサーバを作ってiCloudを解除
- ローカルWordPress専用Webサーバ構築(SSL対応)
- Raspberry Pi OS Liteのインストール
- Raspberry Pi OS LiteでSambaを設定
- ラズパイサーバのWordPressを自動でバックアップ
- ラズパイSSDブート&起動しないときの対処方法
- MyDNSでドメインを無料取得する
- NGINXサーバでWordPressサイト(SSL化済)をWWWへ公開
脚注
↵1 | Linux ディストリビューションによっては、modifiedされたコマンドに遭遇することがあります。 |
---|---|
↵2 | 厳密には、TerminalもGUI上で動くソフトなので、GUIの一部となります。完全なCLI(Command Line Interface)とは言えず、Terminal Emulators が広義の呼称となります。参考:GNOME HELP |
↵3 | 「Linuxはサーバ用途が多いOSなので複数ユーザーでの使用を前提としているため、ユーザー権限を厳格化している」、と目にしたことがあります。 |
↵4 | Terminalにも数多く種類があります。ラズパイはLXDEというデスクトップ環境なのでLXTerminalが採用されています。その他のTerminalはこちら。 |
↵5 | 参照: GNOME HELP |
↵6 | 参照: GNU/Linux チュートリアル |
↵7 | ufw, Samba, Apache2, MariaDB, PHP, WordPress, など。 |
↵8 | 出典:Linuxコマンド:renameの基本とオプション, IT求人ナビ, 2023.06.05閲覧。 |
コメント