1. 👋 はじめに
前回の記事では、Linuxの基本コマンド(ls・cd・cp・mv・rm など)を学びました。
今回はもう一歩踏み込んで:
- 🔒 パーミッション(ファイルのアクセス権限)
- 👤 ユーザー・グループ管理
- 📝 テキスト処理(echo・wc・sort・uniq・cut・tr)
- 🔄 プロセス管理
- 💾 ディスク管理
を解説します!サーバー管理に欠かせない知識ばかりです💪
📌 sed・awk・正規表現については、別途「【番外編】正規表現とsed・awk入門」として解説します。まずはこの記事の内容をしっかり押さえましょう!
2. 🔒 パーミッション(アクセス権限)
パーミッションとは?
Linuxでは誰がファイルに何をできるかを細かく制御できます。これがパーミッションです。
ls -l
# -rw-r--r-- 1 alice users 4096 Mar 17 10:00 memo.txt
# ↑ここがパーミッション
パーミッションの読み方
- rw- r-- r--
│ │ │ └─ その他(other)のユーザーの権限
│ │ └─ グループの権限
│ └─ オーナー(所有者)の権限
└─ ファイルの種類(- =ファイル、d =ディレクトリ、l =シンボリックリンク)
各権限の意味:
r(read) = 読み取り
w(write) = 書き込み
x(execute) = 実行
- = 権限なし
具体例で理解する
-rwxr-xr--
│ │ │ └─ その他:r-- = 読み取りのみ
│ │ └─ グループ:r-x = 読み取り・実行OK、書き込みはNG
│ └─ オーナー:rwx = 読み取り・書き込み・実行すべてOK
└─ ファイル(-)
drwxr-xr-x
└─ ディレクトリ(d)
数値(8進数)表記
パーミッションは数値でも表現できます。chmod コマンドでよく使います。
r = 4
w = 2
x = 1
- = 0
rwx = 4+2+1 = 7
rw- = 4+2+0 = 6
r-x = 4+0+1 = 5
r-- = 4+0+0 = 4
--- = 0+0+0 = 0
よく使う組み合わせ:
777 = rwxrwxrwx(全員がすべて可能)⚠️ 危険!
755 = rwxr-xr-x(オーナーは全権限、他は読み取り・実行のみ)
644 = rw-r--r--(オーナーは読み書き、他は読み取りのみ)
600 = rw-------(オーナーのみ読み書き)
3. 🔧 chmod:パーミッションを変更する
chmod(Change Mode)でパーミッションを変更します。
数値で指定する方法
# 755に変更(スクリプトファイルによく使う)
chmod 755 script.sh
# 644に変更(設定ファイルによく使う)
chmod 644 config.txt
# 600に変更(秘密鍵ファイルなど)
chmod 600 ~/.ssh/id_rsa
# ディレクトリ以下すべてに適用(-R オプション)
chmod -R 755 my-project/
記号で指定する方法
# u=オーナー、g=グループ、o=その他、a=全員
# +=追加、-=削除、==設定
# オーナーに実行権限を追加
chmod u+x script.sh
# その他から書き込み権限を削除
chmod o-w memo.txt
# 全員に読み取り権限を設定
chmod a+r memo.txt
# グループと他のユーザーから書き込みを削除
chmod go-w config.txt
よくある使い方
# シェルスクリプトを実行可能にする
chmod +x script.sh
./script.sh # 実行!
# SSH秘密鍵のパーミッションを正しく設定
chmod 600 ~/.ssh/id_rsa
# ⚠️ 600以外だとSSH接続が拒否される場合あり!
4. 👤 chown:オーナーを変更する
chown(Change Owner)でファイルの所有者を変更します。
# オーナーを変更
chown alice memo.txt
# オーナーとグループを同時に変更
chown alice:developers memo.txt
# ディレクトリ以下すべてに適用
chown -R alice:developers my-project/
# 確認
ls -l memo.txt
# -rw-r--r-- 1 alice developers 42 Mar 17 10:00 memo.txt
5. 👥 ユーザー・グループ管理
現在のユーザーを確認する
# 現在のユーザー名を表示
whoami
# alice
# ユーザーの詳細情報(所属グループなど)
id
# uid=1000(alice) gid=1000(alice) groups=1000(alice),27(sudo),1001(developers)
ユーザーを管理する
# ユーザーを追加
sudo useradd -m bob # -m でホームディレクトリも作成
sudo useradd -m -s /bin/bash bob # ログインシェルも指定
# パスワードを設定
sudo passwd bob
# ユーザー情報を変更
sudo usermod -aG sudo bob # bobをsudoグループに追加
# ユーザーを削除
sudo userdel bob # ホームディレクトリは残る
sudo userdel -r bob # ホームディレクトリも削除
グループを管理する
# グループを作成
sudo groupadd developers
# グループにユーザーを追加
sudo usermod -aG developers alice
# グループの一覧を確認
cat /etc/group | grep developers
# developers:x:1001:alice,bob
# 現在のユーザーが所属するグループ
groups
# alice sudo developers
sudo:管理者権限でコマンドを実行
# 管理者(root)権限でコマンドを実行
sudo apt update
sudo systemctl restart nginx
# rootユーザーに切り替え(注意して使う!)
sudo su -
# 特定のユーザーとしてコマンドを実行
sudo -u bob ls /home/bob
⚠️ sudo の注意点
強力な権限なので慎重に使いましょう
「sudo rm -rf /」などは絶対NG!
必要最小限の操作にとどめる
6. 📝 テキスト処理コマンド
ここからはログ解析やデータ処理に欠かせないテキスト処理コマンドを紹介します!
echo:文字列を出力する
# 文字列を表示
echo "Hello, World!"
# Hello, World!
# 変数を展開して表示
NAME="Alice"
echo "こんにちは、${NAME}さん!"
# こんにちは、Aliceさん!
# 改行なしで出力
echo -n "続けて表示"
# ファイルに書き込む
echo "ログ記録" >> app.log
wc:文字数・行数を数える
# 行数・単語数・バイト数を表示
wc memo.txt
# 10 50 300 memo.txt
# ↑ ↑ ↑
# 行数 単語数 バイト数
# 行数だけ表示(よく使う!)
wc -l memo.txt
# 10 memo.txt
# パイプと組み合わせてファイル数を数える
ls | wc -l
# 25
# ログのエラー行数を数える
grep "ERROR" app.log | wc -l
# 3
sort:並び替える
# アルファベット順に並び替え
sort names.txt
# 逆順に並び替え
sort -r names.txt
# 数値として並び替え(重要!)
sort -n numbers.txt
# ❌ 文字列として並び替えると:1, 10, 2, 20, 3
# ✅ 数値として並び替えると:1, 2, 3, 10, 20
# 特定の列で並び替え(区切り文字を指定)
sort -t "," -k 2 data.csv
# カンマ区切りの2列目で並び替え
# ファイルサイズ順に表示
ls -l | sort -k 5 -n
uniq:重複を取り除く
# 連続する重複行を削除(必ずsortと組み合わせる!)
sort names.txt | uniq
# 重複している行だけ表示
sort names.txt | uniq -d
# 重複していない行だけ表示
sort names.txt | uniq -u
# 出現回数を表示
sort names.txt | uniq -c
# 3 Alice
# 1 Bob
# 2 Charlie
# 出現回数でさらに並び替え(アクセスログ解析などに便利)
sort access.log | uniq -c | sort -rn
cut:列を切り出す
# CSVの特定の列を取り出す
cat data.csv
# Alice,25,Tokyo
# Bob,30,Osaka
# 1列目を取り出す(デリミタ=,、フィールド=1)
cut -d "," -f 1 data.csv
# Alice
# Bob
# 2列目と3列目を取り出す
cut -d "," -f 2,3 data.csv
# 25,Tokyo
# 30,Osaka
# 文字位置で切り出す(1〜5文字目)
cut -c 1-5 memo.txt
tr:文字を変換・削除する
# 小文字を大文字に変換
echo "hello world" | tr 'a-z' 'A-Z'
# HELLO WORLD
# 大文字を小文字に変換
echo "HELLO WORLD" | tr 'A-Z' 'a-z'
# hello world
# 特定の文字を削除(-d オプション)
echo "Hello, World!" | tr -d ','
# Hello World!
# 連続するスペースを1つにまとめる(-s オプション)
echo "hello world" | tr -s ' '
# hello world
7. 🔄 プロセス管理
ps:プロセスの一覧を表示
# 現在のユーザーのプロセスを表示
ps
# すべてのプロセスを詳細表示(よく使う!)
ps aux
# USER PID %CPU %MEM COMMAND
# root 1 0.0 0.1 /sbin/init
# alice 1234 1.2 2.3 python main.py
# 特定のプロセスを検索
ps aux | grep nginx
kill:プロセスを終了させる
# プロセスIDを指定して終了
kill 1234
# 強制終了(応答しない場合)
kill -9 1234
# プロセス名で終了
pkill nginx
pkill -9 python
top・htop:リアルタイムでプロセスを監視
# リアルタイムでCPU・メモリ使用状況を表示
top
# 終了は q
# より見やすいバージョン(要インストール)
htop
# 終了は q または F10
8. 💾 ディスク使用量を確認する
df:ディスクの空き容量を確認
# ディスクの使用状況を表示
df -h
# Filesystem Size Used Avail Use% Mounted on
# /dev/sda1 50G 20G 28G 42% /
# tmpfs 2.0G 1.2M 2.0G 1% /tmp
du:ディレクトリのサイズを確認
# カレントディレクトリのサイズ
du -sh .
# 1.2G .
# 各ディレクトリのサイズを表示
du -sh /*
# サイズ順に表示(大きいものを探す)
du -sh * | sort -rh
# 800M videos
# 300M Documents
# 100M Downloads
9. 📋 コマンド早見表
# パーミッション
chmod 755 <ファイル> # パーミッションを数値で変更
chmod +x <ファイル> # 実行権限を追加
chown user:group <ファイル> # オーナーとグループを変更
# ユーザー管理
whoami # 現在のユーザー名
id # ユーザー・グループ情報
sudo <コマンド> # 管理者権限で実行
sudo useradd -m <ユーザー名> # ユーザーを追加
sudo passwd <ユーザー名> # パスワードを設定
# テキスト処理
echo "文字列" # 文字列を出力
wc -l <ファイル> # 行数を数える
sort <ファイル> # アルファベット順に並び替え
sort -n <ファイル> # 数値として並び替え
sort | uniq # 重複を削除
sort | uniq -c # 出現回数を表示
cut -d "," -f 1 <ファイル> # CSV1列目を切り出す
tr 'a-z' 'A-Z' # 小文字→大文字に変換
# プロセス管理
ps aux # プロセス一覧
ps aux | grep <名前> # プロセスを検索
kill <PID> # プロセスを終了
kill -9 <PID> # プロセスを強制終了
top # リアルタイム監視(終了はq)
# ディスク
df -h # ディスク空き容量
du -sh <ディレクトリ> # ディレクトリのサイズ
du -sh * | sort -rh # サイズ順に一覧表示
10. 🎯 まとめ
| テーマ | 重要ポイント |
|---|---|
| 🔒 パーミッション | r=4・w=2・x=1、755・644・600をよく使う |
| 🔧 chmod / chown | 数値または記号でパーミッション・オーナーを変更 |
| 👤 ユーザー管理 | whoami・id・sudo・useradd |
| 📝 テキスト処理 | sort・uniq・cut・tr をパイプで組み合わせる |
| 🔄 プロセス管理 | ps・kill・top |
| 💾 ディスク管理 | df・du で容量を確認 |
今回学んだコマンドは、サーバー管理の現場で毎日使うものばかりです!特に sort | uniq -c | sort -rn のようなパイプの組み合わせに慣れると、ログ解析がぐっと楽になります🌟。結構難しい内容になってしまい、ごめんなさい。
次回はシェルスクリプト入門です!これまで学んだコマンドを組み合わせて、処理を自動化する方法を解説します!
💬 質問や感想があれば、コメント欄でお気軽にどうぞ!
👍 役に立ったら、いいね&ストックをお願いします!
🎓 ここまで読んでくださって、本当にありがとうございました!
🔗 シリーズ記事
- 【第一回】基本操作 → ファイル操作・検索・エスケープ
- 【第二回】パーミッション・ユーザー管理・テキスト処理(この記事)
- 【第三回】シェルスクリプト入門(近日公開)
- 【番外編】正規表現とsed・awk入門(近日公開)