0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🐧 Linuxコマンド基礎講座【第二回】パーミッション・ユーザー管理・テキスト処理を完全解説!

0
Posted at

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入門(近日公開)
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?