【初心者向け】sudoとchmodコマンド「権限変更」- コピペで試せるオプション理解 -【Linuxコマンド入門 #15】

UBUNTU-linuxコマンド入門シリーズのサムネイル。この記事シリーズでは、よく使うコマンドを優先的に紹介し、シリーズを通して最低限コマンドライン操作ができるようになることを目標に紹介しています。 18 記事
シリーズ

Linuxコマンド入門

LINUXコマンドの基礎について、ゼロから最低限ファイル操作などができるようになるまでの手順を紹介します。linux系な...

前回(#14)は、whoamils -lの見方を学び、「Permission denied」エラーが「に、どの権限(rwx)がないか」が原因であると突き止められるようになりました。

Linuxの権限について、初心者向けに紹介。 読み取り書き込み実行権限についてどのように見るのかについて細かく見てみましょう。

【初心者向け】ls -lとwhoamiコマンド「権限を理解する」- “Permission denied”の謎を解く -【Linuxコマンド入門 #14】

linux入門「権限」の見方を知る。"Permission denied" の「原因」が特定できるようになる。ls-lの権限項目の見方を紹介します。

原因が分かっても、それを「解決」できなければ意味がありません。 今回は、ファイルの権限を自由に変更する chmod コマンドと、一般ユーザーの権限を超えるための「無敵モード」コマンド sudo (スーパーユーザdo)を紹介します。

chmodコマンドの使い方紹介、また、最高権限sudoについて紹介します。Linux Ubuntu初学者向けに、よく使うオプションを優先的に紹介。

1. chmod コマンドとは?

chmod (Change Mode) は、その名の通り、ファイルやディレクトリの「権限(パーミッション)」を変更(Change)するためのコマンドです。

前回紹介したような例:./script.sh を実行しようとして “Permission denied” と出たのは、あなた(所有者)に x (実行) 権限がなかったからかもしれません。chmod は、この x 権限を追加するために使います。

chmod には権限を指定する方法が2つありますが、まずは直感的な「記号モード」から覚えましょう。

2. chmod の基本的な使い方 (記号モード)

記号モードは、「誰に」「どうする」「何の権限を」の3つを組み合わせて指定します。

chmod [誰に][どうする][何の権限を] ファイル名.拡張子

# 例:所有者に実行権限を付与する。
chmod u+x script.sh
  • 誰に (Who)
    • u : ユーザー (User / 所有者)
    • g : グループ (Group)
    • o : その他 (Other)
    • a : 全員 (All / u+g+o と同じ)
  • どうする (Action)
    • + : 権限を追加する (Add)
    • - : 権限を削除する (Remove)
    • = : 権限を(これだけに)設定する (Set)
  • 何の権限を (Permission)
    • r : 読み取り (Read)
    • w : 書き込み (Write)
    • x : 実行 (Execute)

例:読み取り権限を全員に a+r

public.txt の、全員(a)読み取り(r) 権限を 追加(+) しろ

chmod a+r public.txt

例:グループから 書き込み権限を 削除する g-w

memo.txt の、グループ(g) から 書き込み(w) 権限を 削除(-) しろ

chmod g-w memo.txt

例:その他(o) の権限を読み取りだけにする o=r

config.ini の、その他(o) の権限を 読み取り(r) だけ(=) にしろ

chmod o=r config.ini

3. chmod の使い方 (数値モード)

慣れてくると、chmod 755 のような「数値(オクタル)モード」もよく使われます。これは、rwxを3桁の数字で表現する方法です。

1が権限あり、0が権限なしで、( 読み取り,書き込み,実行 )2の順に並べた二進数を10進数に読み替えたときの値で設定できます。

chmodのオクタル表記の意味について表にしてわかりやすくしたもの

これらを3つ、所有者、グループ、その他の順に並べ一括で設定できます。

chmod [User権限][Group権限][Other権限] [ファイル名]

実行できないときは取りあえず chmod 777 とすればいい」というのは、全ユーザに全権限をわたすという意味です。

例:スクリプトの実行で使うことが多い

rwxr-xr-xになり、ユーザは読み書き実行全部、プログラムなどからは読み取りと実行ができる。

chmod 755 script.sh

例:設定ファイルなどに使うことが多い

rw-r--r-- となり、設定ファイルなどによく使われます。

chmod 644 config.ini

4. chmodの便利オプション

4-1. -R (再帰的)

rm -rcp -r と同じで、ディレクトリとその中身すべての権限を一度に変更します。

chmod -R 755 my_project

5. sudo コマンドとは?

chmod を実行した時、あるいは設定ファイル(例: /etc/hosts)を nano で編集しようとした時、“Operation not permitted”“Permission denied” と言われることがあります。

ls -l /etc/hosts

# ls -l /etc/hostsを見てみましょう。 
# rw-r--r-- 1 root root ... /etc/hosts

所有者が root になっています。root とは、Linuxシステムにおける「神様」(ルートユーザ)であり、最強の管理者ユーザーです。 あなたは所有者ではないため、書き込み(w)権限がないのです。

こんな時、一時的に「神様(root)」の力を使ってコマンドを実行するのが sudo (SuperUser Do) です。

5-1. sudo の使い方

使い方は簡単で、「許可されなかったコマンドの頭に sudo を付けて再実行する」だけです。

sudo nano /etc/hosts

# [sudo] password for Username:  <-- (自分のパスワードを入力)

sudo を実行すると、まず自分のパスワードを聞かれます。入力が成功すれば、nanoが管理者権限で起動し、ファイルを編集・保存できるようになります。

5-2. sudo の危険性(安易にsudoしない)

sudo は、あなたを一時的に「無敵」にします。これは非常に便利ですが、同時に非常に危険です。

これは実行してはいけません!!!

$ sudo rm -rf / ##実行禁止、バルスコマンド

このコマンドは、「管理者権限で、OS全体を、警告なしに削除する」という意味になり、システムが完全に破壊されます。

sudo を使うときは、自分が何をしようとしているのかを必ず理解し、コマンドが正しいことを確認してから実行してください。

第15回のまとめ

  • chmod
    • ファイルの権限(rwx)を変更するコマンド。
    • 記号モード: chmod u+x script.sh (直感的)
    • 数値モード: chmod 755 script.sh (よく使う)
  • sudo
    • 管理者(root)権限でコマンドを実行するコマンド。
    • “Permission denied” が出た時の最終手段。
    • sudo [実行したいコマンド] の形で使う。
    • 非常に危険なため、実行するコマンドをよく確認すること。

次回予告

お疲れ様でした! これで「Permission denied」の原因(ls -l)も、対処法(chmod, sudo)も学び、第一シリーズの大きな壁を越えました。 次回(#16)は、広大なLinuxのファイルシステムから、目的のファイルを名前や条件で探し出す「検索」コマンド、find を紹介します。

findコマンドの使い方紹介、Linux Ubuntu初学者向けに、よく使うオプションを優先的に紹介しています。

【初心者向け】findコマンド「ファイル検索」- コピペで試せるオプション理解 -【Linuxコマンド入門 #16】

linuxでファイルを探す方法,findコマンドについて、実務でも使える、よく使うオプションや便利な使い方について紹介します。

UBUNTU-linuxコマンド入門シリーズのサムネイル。この記事シリーズでは、よく使うコマンドを優先的に紹介し、シリーズを通して最低限コマンドライン操作ができるようになることを目標に紹介しています。 18 記事
シリーズ

Linuxコマンド入門

LINUXコマンドの基礎について、ゼロから最低限ファイル操作などができるようになるまでの手順を紹介します。linux系な...