Linuxのユーザー・グループ・sudo|rootで作業しない理由【初心者向け】

前の記事で、持ち主を変えるときに sudo というコマンドを使いました。パスワードを聞かれて、ちょっとドキッとした方もいるかもしれません。

Linux は、もともとたくさんの人が1台を一緒に使うことを前提に作られています。だから「誰が使っているのか(ユーザー)」「どのチームに入っているのか(グループ)」「管理者の仕事を誰に任せるのか(sudo)」というしくみが、最初から用意されています。

私も最初のころは、エラーが出るたびに何でも sudo をつけて押し切っていました。その結果、自分のユーザーで書き換えられないファイルが増えてしまい、あとで片付けるのに苦労しました。この記事では、ユーザーとグループのしくみと、sudo を「必要なときだけ」使うコツを見ていきます。

💡
この記事でわかること
  • 自分のユーザー名とグループを確かめる whoami・id・groups
  • root(管理者)と、ふつうのユーザーの違い
  • sudo のしくみと、「root で作業しない」ほうがよい理由
  • 練習用のユーザーを作って、権限の違いを確かめる方法
🔰
この記事の前提
  • ls -l で、持ち主・グループ・権限を読める
  • chmod・chown の基本がわかる

まだの方は、前の記事「Linuxの「Permission denied」の直し方|chmod・chownの使い方【初心者向け】」から読むのがおすすめです。

💡
用語メモ
  • スクリプト:やりたい処理を順番に書いておき、まとめて実行できるファイル(小さなプログラム)

用語で迷ったら、連載のまとめ記事の「よく出てくる用語ミニ辞典」でも確かめられます。


結論:ふだんは自分のユーザー、管理者の仕事だけ sudo

用語 ひとことで 例
ユーザー Linux を使う人のアカウント kaito
グループ ユーザーをまとめたチーム kaito・sudo など
root 何でもできる管理者のユーザー root
sudo 1回だけ管理者の権限を借りるコマンド sudo apt update

ユーザー・グループ・root・sudo の関係

ふだんの作業は自分のユーザーで行い、ソフトを入れる・システムの設定を変えるなど「管理者の仕事」のときだけ、コマンドの頭に sudo をつける。これが基本です。


自分が誰かを確かめる:whoami・id・groups

まずは、今の自分が誰なのかを確かめてみましょう。

  • 1
  • 2
  • 3
whoami
id
groups

🖥️
この記事の出力例について

ここから先の出力例は、Debian 13での実行例です(ユーザー名 kaito・パソコン名 demo のダミー環境)。UbuntuやWSL(=Windows の中で Linux を動かせる、Microsoft のしくみ)では、表示が少し違うことがあります。

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
kaito@demo:~/linux-practice/chmod-test$ whoami
kaito
kaito@demo:~/linux-practice/chmod-test$ id
uid=1000(kaito) gid=1000(kaito) groups=1000(kaito),27(sudo),100(users)
kaito@demo:~/linux-practice/chmod-test$ groups
kaito sudo users

groups に sudo が入っているので、kaito は sudo を使えます。今回の検証用のユーザーは、あとから作って sudo グループに入れたものなので、グループは3つだけでした。Debian を入れるときに最初に作ったユーザーなら、cdrom・audio・video など、ほかのグループもいくつか並ぶのが普通です。

Debian 13での実行画面

コマンド わかること
whoami 今のユーザー名
id ユーザーの番号(uid)、メインのグループ(gid)、入っているグループ全部
groups 入っているグループの名前だけ

groups の結果に sudo が入っていれば、そのユーザーは sudo を使えます(Debian・Ubuntu の場合)。


ユーザーの一覧は /etc/passwd にある

ユーザーの情報は、/etc/passwd というファイルに1行ずつ書かれています。名前に「passwd」とありますが、今はパスワードそのものは入っていません。自分の行だけを取り出してみましょう(grep は、指定した文字を含む行だけを表示するコマンドです。この Lv2 の記事でくわしく扱います)。

  • 1
grep kaito /etc/passwd

(例)

  • 1
kaito:x:1000:1000:,,,:/home/kaito:/bin/bash

: で区切られていて、左から「ユーザー名」「(パスワードは別の場所にある印の x)」「ユーザー番号」「グループ番号」「説明」「ホームディレクトリ」「使うシェル(=打ったコマンドを読み取って、プログラムを動かし、結果を返してくれるプログラム)」の順に並んでいます。今回は「説明」の欄に名前などを入れていないので、,,, とカンマだけになっています。

/etc/passwd には、www-data や nobody など、人ではないシステム用のユーザーもたくさん入っています。ソフトごとに専用のユーザーを用意して、できることをしぼるためです。


root と sudo:管理者の権限を「借りる」

root は、Linux の中で何でもできる特別なユーザーです。システムのファイルを書き換えることも、消すことも、ほかのユーザーのファイルを読むこともできます。

sudo は、ふつうのユーザーがそのコマンド1回だけ root の権限を借りるしくみです。試してみましょう。

  • 1
  • 2
whoami
sudo whoami

(例)

  • 1
  • 2
  • 3
  • 4
kaito@demo:~/linux-practice/chmod-test$ whoami
kaito
kaito@demo:~/linux-practice/chmod-test$ sudo whoami
root

今回は、直前(前の記事の sudo chown)にパスワードを入れていたので、聞かれずにそのまま root と表示されました。しばらく sudo を使っていなかった場合は、先に [sudo] password for kaito: と聞かれます。

sudo をつけたときだけ、結果が root になりました。コマンドが終わると、また kaito に戻っています。

⚠️
sudo のパスワードは「自分の」パスワード

sudo で聞かれるのは、root のパスワードではなく今のユーザー(kaito)のパスワードです。入力しても画面には何も出ませんが、そのまま打って Enter を押してください。一度入力すると、しばらくのあいだは聞かれなくなります。

sudo で何ができるか確かめる
  • 1
sudo -l

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
Matching Defaults entries for kaito on demo:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty

User kaito may run the following commands on demo:
    (ALL : ALL) ALL

いちばん下の (ALL : ALL) ALL は、「どのユーザーとしても、どのグループとしても、どのコマンドでも sudo で実行してよい」という意味です。上の Matching Defaults entries は sudo の基本設定なので、今は読み飛ばして大丈夫です。

「sudoers ファイルにありません」と言われたら

sudo を使ったときに「〜 is not in the sudoers file」のようなメッセージが出たら、そのユーザーは sudo を使うことを許されていません。Debian を入れるときに root のパスワードを設定した場合などに起こります。

この場合は、root のパスワードを知っている管理者に、自分のユーザーを sudo グループに入れてもらう必要があります。自分で直すときは、手順を AI に聞きながら、1行ずつ意味を確かめて進めましょう。


なぜ root で作業しないの?

「いちいち sudo をつけるのが面倒なら、最初から root になればいいのでは?」と思いますよね。実は sudo -i や su - というコマンドで、root のまま作業し続けることもできます。でも、ふだんの作業でそれをするのはおすすめしません。

理由 くわしく
打ち間違いが命取りになる root は止めてもらえません。ふつうのユーザーなら「Permission denied」で止まる操作も、そのまま実行されます
持ち主が root のファイルが増える root で作ったファイルは持ち主が root になり、あとで自分のユーザーで書き換えられなくなります
何をしたか追いにくい sudo で実行したコマンドは記録が残るので、あとから「いつ何をしたか」を確かめやすくなります

💡
sudo をつける前に、ひと呼吸

「Permission denied」が出たときは、すぐに sudo をつけるのではなく、まず「これは本当に管理者の仕事か?」を考えましょう。自分のホームディレクトリの中のファイルなら、sudo はいりません。持ち主や権限がおかしくなっていないかを、ls -l で確かめるのが先です。


sudo が要る場面・要らない場面

「ひと呼吸」のときに迷わないよう、よくある場面を分けておきます。

場面 sudo 理由
apt でソフトを入れる・消す 要る システム全体に入るため
/etc の設定ファイルを書き換える 要る 持ち主が root のファイルだから
ユーザーを作る・消す 要る 管理者の仕事だから
自分のホーム(~)の中のファイルを作る・書き換える 要らない 持ち主が自分だから
自分で書いたスクリプトを ~ の中で動かす 要らない 自分の権限で足りるから
自分のファイルで「Permission denied」が出た まず要らない ls -l で持ち主と権限を確かめ、前の記事の chmod・chown で直す

迷ったら「そのファイルの持ち主は誰?」を ls -l で確かめるのが近道です。持ち主が自分なら、sudo はほぼ要りません。


練習用のユーザーを作って、違いを確かめる

ユーザーごとに権限が分かれていることを、実際に確かめてみましょう。練習用に practice というユーザーを作り、最後に消します。

⚠️
この節は sudo を使います

ユーザーを作る・消すのは管理者の仕事なので、sudo を使います。ユーザー名を打ち間違えると、別のユーザーを消してしまうおそれがあります。名前は必ず practice にして、コピーして使ってください。

ユーザーを作る:adduser
  • 1
sudo adduser practice

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
kaito@demo:~/linux-practice/chmod-test$ sudo adduser practice
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for practice
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n]

New password: と Retype new password: では、練習用のパスワードを2回入力します(画面には何も表示されません)。Full Name から Other までの5つは Enter だけで飛ばし、最後の Is the information correct? [Y/n] も Enter(Y の意味)で大丈夫です。今回の Debian 13(adduser 3.152)では、標準の設定のままだと info: で始まる途中経過の行は表示されず、いきなりパスワードを聞かれました。Ubuntu などの版や --verbose を付けたときは info: の行が出ることがあります。

パスワードは練習用のものを決めて入力してください。

  • 1
  • 2
id practice
ls /home

(例)

  • 1
  • 2
  • 3
  • 4
kaito@demo:~/linux-practice/chmod-test$ id practice
uid=1001(practice) gid=1001(practice) groups=1001(practice),100(users)
kaito@demo:~/linux-practice/chmod-test$ ls /home
kaito  practice

ほかのユーザーから、自分のファイルは見える?

sudo -u ユーザー名 を使うと、「そのユーザーとして」コマンドを1回だけ実行できます。前の記事で作った、自分だけが読める private.txt(権限 600)を、practice から読もうとしてみましょう。

  • 1
  • 2
ls -l ~/linux-practice/chmod-test/private.txt
sudo -u practice cat /home/kaito/linux-practice/chmod-test/private.txt

(例)

  • 1
  • 2
  • 3
  • 4
kaito@demo:~/linux-practice/chmod-test$ ls -l ~/linux-practice/chmod-test/private.txt
-rw------- 1 kaito kaito 55 Nov  1 05:25 /home/kaito/linux-practice/chmod-test/private.txt
kaito@demo:~/linux-practice/chmod-test$ sudo -u practice cat /home/kaito/linux-practice/chmod-test/private.txt
cat: /home/kaito/linux-practice/chmod-test/private.txt: Permission denied

同じパソコンのほかのユーザーからは読めませんでした。ただ、今回の環境では、断られた理由はファイルの 600 だけではありませんでした。自分のホームディレクトリの権限も見てみましょう。

  • 1
ls -ld /home/kaito

(例)

  • 1
drwx------ 3 kaito kaito 4096 Nov  1 05:25 /home/kaito

今回の Debian 13 では、/home/kaito が drwx------(700)になっていて、kaito 以外はホームディレクトリの中に入ること自体ができません。つまり practice は、private.txt にたどり着く前に、/home/kaito の入り口で断られていたわけです。エラーメッセージにはファイルの名前が出るだけで、どの段階で断られたのかまでは書かれません。

ホームディレクトリの権限は、環境によって違います(drwxr-xr-x のように、ほかの人も入れる設定の環境もあります)。そうした環境でも、ファイルを 600 にしておけば中身は読まれません。前の記事の「APIキーを書いたファイルは 600 に」は、こういう「二重の鍵」の意味もあるんです。

Debian 13での実行画面

練習用のユーザーを消す:deluser

確認できたら、練習用のユーザーを消しておきましょう。--remove-home をつけると、/home/practice も一緒に消えます。ユーザー名が practice になっているか、打つ前によく確かめてください。

  • 1
  • 2
sudo deluser --remove-home practice
ls /home

(例)

  • 1
  • 2
  • 3
kaito@demo:~/linux-practice/chmod-test$ sudo deluser --remove-home practice
kaito@demo:~/linux-practice/chmod-test$ ls /home
kaito

今回の Debian 13 では、sudo deluser --remove-home practice は何も表示せずに終わりました。こちらも、Ubuntu などの版や --verbose を付けたときは info: の行が出ることがあります。ls /home で kaito だけに戻っていれば、きちんと消えています。

🚫
実行しないでください:グループまわりの危ない操作
  • グループに追加するときの「-a」忘れ:ユーザーをグループに追加する usermod は、-aG(追加する)と書くのが決まりです。-a を忘れて -G だけにすると、それまで入っていたグループから外れてしまい、sudo グループから外れて管理者の作業ができなくなることがあります。
  • /etc/sudoers を直接書き換える:sudo の設定ファイルを nano などで直接書き換えて書き間違えると、誰も sudo を使えなくなることがあります。設定を変えるときは、書き間違いをチェックしてくれる専用のコマンド(visudo)を使うのが決まりです。この連載では、sudo の設定は変更しません。

🤖 詰まったらAIに聞こう:sudo やユーザーまわりで困った

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
Linuxの初心者です。ユーザーや sudo まわりで困っています。
原因として考えられることと、安全な確かめ方・直し方を、1行ずつ意味つきで教えてください。
システムの設定を書き換える手順の場合は、元に戻す方法もあわせて教えてください。

【使っている環境】WSLのUbuntu など
【whoami の結果】ここに貼る
【groups の結果】ここに貼る
【実行したコマンド】ここに貼る
【表示されたメッセージ】ここに貼る(パスワードは絶対に貼らない)

🔒
AIに貼る前に:秘密情報やパスワードは貼らない

sudo や adduser で入力するパスワードは、AI にもチャットにも、絶対に貼らないでください。画面をコピーするときに、パスワードの入力欄の前後にほかの情報(サーバーの名前や IP アドレスなど)が写っていないかも確かめましょう。


よくある質問

Q. sudo のパスワードを忘れてしまいました。

WSL の場合は、Windows の PowerShell から wsl -u root で root として入り、passwd ユーザー名 でパスワードを決め直す方法が、Microsoft の WSL のドキュメントで案内されています。VPS(=大きな物理サーバーを区切って作った、自分専用の仮想サーバーを、月額などで借りられるサービス)などのサーバーの場合は、契約しているサービスの管理画面から復旧する方法を確かめてください。

Q. グループに追加したのに、groups の結果に出てきません。

グループの変更は、ログインし直してから反映されます。WSL なら、ターミナルを全部閉じて開き直す(それでもだめなら PowerShell で wsl --shutdown してから開き直す)と反映されることが多いです。

Q. root のパスワードを知りません。困りませんか?

困りません。Ubuntu などでは、最初から root のパスワードを決めずに、sudo を使う前提で作られていることが多いです。この記事のとおり、ふだんは自分のユーザーで作業し、必要なときだけ sudo を使えば大丈夫です。


まとめ

  • whoami・id・groups で、自分のユーザーとグループを確かめられる
  • ユーザーの一覧は /etc/passwd。人ではないシステム用のユーザーもいる
  • root は何でもできる管理者。sudo はコマンド1回だけ root の権限を借りるしくみ
  • sudo のパスワードは自分のパスワード。何でも sudo で押し切らない
  • ふだんは自分のユーザーで作業し、管理者の仕事のときだけ sudo

次の記事では、sudo を使う代表的な場面、apt でソフトを入れる・更新する・消す方法を見ていきます。


次に読む記事


関連する記事