- サーバー
Linuxユーザー追加とsudo権限付与|useradd手順と確認コマンド一覧
Linuxでユーザーを追加してsudo権限を付ける最短手順は、useradd -m -s /bin/bash ユーザー名 → passwd ユーザー名 → usermod -aG sudo ユーザー名(RHEL系は wheel)の3ステップです。 ただし useradd は -m を付け忘れるとホームディレクトリが作られず、ログインシェルも /bin/sh になるなど、知らないとつまずく既定値がいくつかあります。
この記事では、Ubuntu 24.04.4 LTS(passwd 4.13 / sudo 1.9.15p5 / adduser 3.137)で実際に実行した結果を載せながら、useradd と adduser の違い、/etc/sudoers.d/ を使った権限の付け方、visudo -c での構文チェック(わざと誤りを入れたときのエラー文つき)、作成後の確認コマンド、よくあるトラブルの対処までをまとめます。オプション早見表と逆引き表を用意したので、手順書の代わりにそのまま使えます。
ユーザー追加とsudo付与の早見表
| やりたいこと | コマンド(Ubuntu / Debian) | RHEL系(Rocky / Alma / Fedora) |
|---|---|---|
| ユーザーを作る(ホーム・bash付き) | useradd -m -s /bin/bash kaito |
useradd kaito(既定でホーム作成・bash) |
| 対話式で作る | adduser kaito |
(adduser は useradd へのリンク) |
| パスワードを設定 | passwd kaito |
同じ |
| パスワードを一括設定(スクリプト) | echo 'kaito:パスワード' | chpasswd |
同じ |
| sudo権限を付ける(グループ) | usermod -aG sudo kaito |
usermod -aG wheel kaito |
| sudo権限を付ける(個別ファイル) | /etc/sudoers.d/90-kaito を作成して chmod 0440 |
同じ |
| sudoersの構文チェック | visudo -c(ファイル単体は visudo -cf ファイル) |
同じ |
| 付いた権限を確認 | sudo -l -U kaito |
同じ |
| 所属グループを確認 | id kaito / groups kaito |
同じ |
| ユーザー情報を確認 | getent passwd kaito |
同じ |
| sudo権限を外す | gpasswd -d kaito sudo |
gpasswd -d kaito wheel |
| アカウントを一時停止 | usermod -L kaito(解除は -U) |
同じ |
| ユーザーを削除(ホームごと) | userdel -r kaito / deluser --remove-home kaito |
userdel -r kaito |
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「Linuxユーザー追加とsudo権限付与|useradd手順と確認コマンド一覧」
検証した環境
本文の実行結果は、次の環境で root として実行したものです。ホスト本体の設定を変えないよう、/etc と /home のコピーを別のマウント名前空間に割り当てた検証用の環境で操作しています(コマンドと出力は通常の Ubuntu と同じです)。
| 項目 | バージョン |
|---|---|
| OS | Ubuntu 24.04.4 LTS |
| passwd(useradd / usermod / chage など) | 1:4.13+dfsg1-4ubuntu3.2 |
| sudo | 1.9.15p5-3ubuntu5.24.04.2 |
| adduser | 3.137ubuntu1 |
RHEL系の挙動は公式ドキュメントと既定の設定ファイルに沿って記載しており、RHEL系の環境では実行していません。
useraddとadduserの違いを実行結果で比較する
-mなしのuseraddはホームもbashもない
useradd は低レベルのコマンドで、オプションを付けないと「最小限のユーザー」しか作りません。 Ubuntu 24.04 で何も付けずに実行した結果です。
useradd kaito
getent passwd kaito
ls -ld /home/kaito
kaito:x:1001:1002::/home/kaito:/bin/sh
ls: cannot access '/home/kaito': No such file or directory
/etc/passwd 上のホームは /home/kaito と書かれていますが、ディレクトリ自体は作られていません。シェルも /bin/sh(Ubuntuでは dash)なので、ログインすると補完や履歴が効かない状態になります。
これは Ubuntu の既定設定によるものです。
grep -E '^(CREATE_HOME|USERGROUPS_ENAB|UID_MIN)' /etc/login.defs
grep -v '^#' /etc/default/useradd | grep .
UID_MIN 1000
USERGROUPS_ENAB yes
SHELL=/bin/sh
/etc/login.defs に CREATE_HOME の行がない(=ホームを作らない)ことと、/etc/default/useradd の SHELL=/bin/sh が理由です。RHEL系では login.defs に CREATE_HOME yes、/etc/default/useradd に SHELL=/bin/bash が入っているため、同じ useradd kaito でもホームと bash が用意されます。手順書には -m -s /bin/bash を明記しておくと、どちらの環境でも同じ結果になります。
-m -s を付けたuseradd
useradd -m -s /bin/bash -c "Kaito Dev" kaito
getent passwd kaito
ls -la /home/kaito
kaito:x:1004:1004:Kaito Dev:/home/kaito:/bin/bash
total 20
drwxr-x--- 2 kaito kaito 4096 Oct 1 23:34 .
drwxr-xr-x 4 root root 4096 Oct 1 23:34 ..
-rw-r--r-- 1 kaito kaito 220 Mar 31 2024 .bash_logout
-rw-r--r-- 1 kaito kaito 3771 Mar 31 2024 .bashrc
-rw-r--r-- 1 kaito kaito 807 Mar 31 2024 .profile
-m でホームが作られ、/etc/skel の中身(.bashrc など)がコピーされます。 ホームのパーミッションは drwxr-x---(750)で、Ubuntu 21.04 以降は他ユーザーからホームを見られない設定になっています。
adduserは対話式で必要なものをまとめて用意する
adduser は Debian / Ubuntu の高レベルなラッパーで、ホーム作成・bash・パスワード入力・補助グループ追加まで1回で行います。 対話を省くため --disabled-password を付けて実行した結果です。
adduser --disabled-password --comment "" mio
getent passwd mio
id mio
info: Adding user `mio' ...
info: Selecting UID/GID from range 1000 to 59999 ...
info: Adding new group `mio' (1003) ...
info: Adding new user `mio' (1003) with group `mio (1003)' ...
info: Creating home directory `/home/mio' ...
info: Copying files from `/etc/skel' ...
info: Adding new user `mio' to supplemental / extra groups `users' ...
info: Adding user `mio' to group `users' ...
mio:x:1003:1003:,,,:/home/mio:/bin/bash
uid=1003(mio) gid=1003(mio) groups=1003(mio),100(users)
--disabled-password を外すと、パスワードと氏名などを順に聞かれます。Ubuntu 24.04 の adduser 3.137 では氏名欄の指定に --comment を使います(以前の手順書でよく見る --gecos の代わり)。
どちらを使うかの判断表
| 観点 | useradd | adduser |
|---|---|---|
| 種類 | 全ディストリ共通の低レベルコマンド(shadow-utils) | Debian / Ubuntu のラッパー(Perlスクリプト) |
| ホーム作成 | -m が必要(Ubuntu) |
自動 |
| ログインシェル | 既定 /bin/sh(Ubuntu) |
/bin/bash |
| パスワード | 別途 passwd |
対話で入力 |
| 補助グループ | -G で指定 |
users に自動追加(24.04) |
| 向いている場面 | スクリプト・Ansible・Dockerfile・RHEL系と共通の手順書 | 手作業で1人ずつ作るとき |
| 既存ユーザーをグループに追加 | usermod -aG グループ ユーザー |
adduser ユーザー グループ |
手作業なら adduser、自動化や複数ディストリ共通の手順なら useradd -m -s /bin/bash が扱いやすいと覚えておくと迷いません。
ユーザー・グループ管理コマンドのオプション早見表
useradd(作成)
| オプション | 意味 | 例 |
|---|---|---|
-m |
ホームを作成し /etc/skel をコピー |
useradd -m kaito |
-M |
ホームを作らない | useradd -M svc |
-s |
ログインシェル | -s /bin/bash、ログイン不要なら -s /usr/sbin/nologin |
-c |
コメント(氏名など) | -c "Kaito Dev" |
-u |
UIDを指定 | -u 1500 |
-g |
主グループ | -g devteam |
-G |
補助グループ(カンマ区切り) | -G sudo,devteam |
-d |
ホームのパス | -d /data/kaito |
-e |
アカウント有効期限 | -e 2026-12-31 |
-r |
システムアカウント(UIDが1000未満) | useradd -r -s /usr/sbin/nologin appsvc |
-k |
skelの代わりに使うディレクトリ | -k /etc/skel-dev |
usermod(変更)
| オプション | 意味 | 注意 |
|---|---|---|
-aG |
補助グループに追加 | -a を忘れると既存の補助グループが置き換わる |
-G |
補助グループを指定した内容で置き換え | 意図して外したいとき以外は -aG |
-s |
シェル変更 | chsh -s でも可 |
-L / -U |
パスワードロック / 解除 | 鍵認証のログインは別途制御が必要 |
-l |
ログイン名の変更 | -d 新ホーム -m と組み合わせてホームも移動 |
-e |
有効期限 | -e "" で解除 |
その他のコマンド
| コマンド | 主な使い方 | 内容 |
|---|---|---|
passwd |
passwd kaito / passwd -S kaito |
パスワード設定 / 状態表示(P=設定済み、L=ロック、NP=なし) |
chpasswd |
echo 'kaito:pass' | chpasswd |
非対話でパスワード設定(スクリプト向け) |
chage |
chage -l kaito / chage -M 90 kaito / chage -d 0 kaito |
期限の表示 / 最大日数 / 次回ログイン時に変更を求める |
groupadd |
groupadd devteam |
グループ作成 |
gpasswd |
gpasswd -a kaito devteam / gpasswd -d kaito devteam |
グループへの追加 / 削除(1人ずつ確実に操作できる) |
groupdel |
groupdel devteam |
グループ削除 |
userdel |
userdel -r kaito |
ユーザー削除(-r でホームとメールスプールも削除) |
deluser |
deluser --remove-home kaito |
Debian / Ubuntu のラッパー |
sudo権限を付ける2つの方法
sudo権限の付け方は「sudo(wheel)グループに入れる」と「/etc/sudoers.d/ にファイルを置く」の2つです。 全権限を渡すならグループ、権限を絞るならファイル、と使い分けます。
方法1:sudoグループ(Ubuntu)/ wheelグループ(RHEL系)に入れる
Ubuntu の /etc/sudoers には、最初から次の行があります(コメントと Defaults 行を除いて表示)。
grep -vE '^\s*(#|$)' /etc/sudoers | grep -v '^Defaults'
root ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
@includedir /etc/sudoers.d
%sudo は「sudoグループのメンバー」という意味なので、ユーザーを sudo グループに入れるだけで全コマンドを sudo で実行できるようになります。RHEL系では同じ役割を %wheel ALL=(ALL) ALL が担っています。
まず、グループに入れる前の状態を確認します。
su - kaito -c 'echo Passw0rd-Sample | sudo -S whoami'
sudo -l -U kaito
[sudo] password for kaito: kaito is not in the sudoers file.
User kaito is not allowed to run sudo on vm.
sudo グループに追加します。
usermod -aG sudo kaito
id kaito
getent group sudo
sudo -l -U kaito
uid=1004(kaito) gid=1004(kaito) groups=1004(kaito),27(sudo)
sudo:x:27:ubuntu,kaito
(Matching Defaults entries の4行は省略)
User kaito may run the following commands on vm:
(ALL : ALL) ALL
sudo -l -U に (ALL : ALL) ALL と出れば、全コマンドを sudo で実行できる状態です。 新しくログインした kaito で sudo whoami を実行すると root と表示されました。
| 項目 | Ubuntu / Debian | RHEL系 |
|---|---|---|
| sudo用グループ | sudo(GID 27) |
wheel(GID 10) |
| 追加コマンド | usermod -aG sudo kaito |
usermod -aG wheel kaito |
| sudoersの該当行 | %sudo ALL=(ALL:ALL) ALL |
%wheel ALL=(ALL) ALL |
| 個別ファイルの読み込み | @includedir /etc/sudoers.d |
#includedir /etc/sudoers.d(# で始まるがコメントではない) |
方法2:/etc/sudoers.d/ にユーザー別のファイルを置く
/etc/sudoers 本体を直接編集せず、/etc/sudoers.d/ に1ユーザー1ファイルで置くと、追加と削除がファイル単位で済みます。 パッケージ更新で本体が置き換わっても影響を受けにくいのも利点です。
編集は visudo -f を使うと、保存時に構文チェックが走ります。
visudo -f /etc/sudoers.d/90-mio
スクリプトで作る場合は、一時ファイルに書いて visudo -cf で確認してから、install -m 0440 で配置すると安全です。
cat > /tmp/90-mio <<'EOF'
mio ALL=(ALL) NOPASSWD: ALL
EOF
visudo -cf /tmp/90-mio && install -m 0440 -o root -g root /tmp/90-mio /etc/sudoers.d/90-mio
rm -f /tmp/90-mio
visudo -cでわざと誤りを検出する
NOPASSWD の後ろのコロンを書き忘れたファイルを置いて、チェックしてみます。
printf 'mio ALL=(ALL) NOPASSWD ALL\n' > /etc/sudoers.d/90-mio
visudo -cf /etc/sudoers.d/90-mio; echo rc=$?
visudo -c; echo rc=$?
/etc/sudoers.d/90-mio:1:24: syntax error
mio ALL=(ALL) NOPASSWD ALL
^~~
rc=1
/etc/sudoers.d/90-mio:1:24: syntax error
mio ALL=(ALL) NOPASSWD ALL
^~~
rc=1
行番号・桁番号と ^~~ で誤りの位置が示され、終了コードが1になります。 sudoers に構文エラーがあると sudo 自体が使えなくなることがあるため、配置前のチェックが大切です。
次に、正しい内容に直したものの、パーミッションが 0644 のままの場合です。
printf 'mio ALL=(ALL) NOPASSWD: ALL\n' > /etc/sudoers.d/90-mio
ls -l /etc/sudoers.d/90-mio
visudo -c; echo rc=$?
-rw-r--r-- 1 root root 28 Oct 1 23:34 /etc/sudoers.d/90-mio
/etc/sudoers.d/90-mio: bad permissions, should be mode 0440
/etc/sudoers: parsed OK
/etc/sudoers.d/README: parsed OK
rc=1
chmod 0440 にすると通ります。
chmod 0440 /etc/sudoers.d/90-mio
visudo -c; echo rc=$?
sudo -l -U mio
/etc/sudoers: parsed OK
/etc/sudoers.d/90-mio: parsed OK
/etc/sudoers.d/README: parsed OK
rc=0
User mio may run the following commands on vm:
(ALL) NOPASSWD: ALL
この環境の sudo 1.9.15 では、0644 のままでも sudo 自体は動作しましたが、visudo -c は失敗扱い(rc=1)になります。チェックを自動化している場合に引っかかるため、0440・所有者 root に揃えるのが確実です。
ファイル名のルール
| ファイル名 | 読み込まれるか | 理由 |
|---|---|---|
90-mio |
読み込まれる | 推奨の形 |
mio.conf |
読み込まれない | 名前に . を含むファイルはスキップされる |
mio~ |
読み込まれない | ~ で終わるファイルはスキップされる |
実際に mio.conf に全権限の行を置いても、sudo -l -U mio の結果は変わらず、visudo -c もエラーを出しませんでした。ファイル名は「数字-ユーザー名」のように . を含めない形にしておくと迷いません。
NOPASSWDとコマンド限定の書き方
sudoers の1行は「誰が どのホストで =(誰として) 何を」の順に書きます。
mio ALL =(root) NOPASSWD: /usr/bin/systemctl restart nginx
│ │ │ │ └ 実行を許すコマンド(フルパス)
│ │ │ └ パスワード入力を省略するタグ
│ │ └ 実行ユーザー(ALL:ALL ならユーザーとグループを問わない)
│ └ 対象ホスト(通常 ALL)
└ ユーザー名(%から始めるとグループ)
コマンドを限定した例です。Cmnd_Alias で名前を付けておくと読みやすくなります。
Cmnd_Alias WEB_CMDS = /usr/bin/systemctl restart nginx, /usr/bin/systemctl status nginx
mio ALL=(root) NOPASSWD: WEB_CMDS
配置後の確認結果です。
User mio may run the following commands on vm:
(root) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/systemctl status nginx
許可していないコマンドを実行すると、次のように表示されます。
su - mio -c 'sudo whoami'
Sorry, user mio is not allowed to execute '/usr/bin/whoami' as root on vm.
sudo -n(パスワードを聞かない)を付けた場合は sudo: a password is required と表示されます。
| 書き方 | 意味 | 気をつけたい点 |
|---|---|---|
kaito ALL=(ALL:ALL) ALL |
全コマンド、パスワードあり | sudoグループと同じ |
kaito ALL=(ALL) NOPASSWD: ALL |
全コマンド、パスワードなし | 自動化用アカウントに限定し、鍵認証と組み合わせる |
mio ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx |
特定コマンドのみ | フルパスで書く(which で確認) |
mio ALL=(root) /usr/bin/systemctl * nginx |
引数をワイルドカード | 想定外の引数も通るため、必要な形を列挙するほうが明確 |
%devteam ALL=(root) NOPASSWD: WEB_CMDS |
グループ単位で付与 | メンバー管理をグループ側で行える |
mio ALL=(root) NOPASSWD: /usr/bin/vim |
エディタを許可 | エディタからシェルを起動できるため、ファイル編集は sudoedit を許可する形がおすすめ |
エディタ・ページャ・シェルスクリプトのように「中から別のコマンドを起動できるもの」を許可すると、実質的に全権限と同じになります。 ファイル編集を任せたいときは、mio ALL=(root) sudoedit /etc/nginx/nginx.conf のように sudoedit を使うと、編集だけを許可できます。
なお、この検証環境はコンテナのため systemctl status nginx は System has not been booted with systemd as init system (PID 1). Can't operate. となりました(sudoの許可自体は通っています)。
作成後の確認コマンド一覧
| 確認したいこと | コマンド | 見るポイント |
|---|---|---|
| UID・所属グループ | id kaito |
groups= に sudo / wheel があるか |
| グループ名だけ | groups kaito |
同上(簡易版) |
| passwdの1行 | getent passwd kaito |
ホームとシェル(6・7列目) |
| グループのメンバー | getent group sudo |
4列目にユーザー名があるか |
| sudoで何ができるか | sudo -l -U kaito |
may run 以下の内容 |
| パスワード状態 | passwd -S kaito |
2列目 P / L / NP |
| 期限 | chage -l kaito |
Password expires / Account expires |
| 最終ログイン | lastlog -u kaito |
Never logged in か日時か |
| 一般ユーザー一覧 | awk -F: '$3>=1000 && $3<60000 {print $1,$3,$7}' /etc/passwd |
UID 1000以上を抽出 |
実行結果の例です。
id kaito; groups kaito
getent passwd kaito; getent group sudo devteam
passwd -S kaito
lastlog -u kaito
awk -F: '$3>=1000 && $3<60000 {print $1, $3, $7}' /etc/passwd
uid=1004(kaito) gid=1004(kaito) groups=1004(kaito),27(sudo),1006(devteam)
kaito : kaito sudo devteam
kaito:x:1004:1004:Kaito Dev:/home/kaito:/bin/bash
sudo:x:27:ubuntu,kaito
devteam:x:1006:kaito,mio
kaito P 2026-10-01 0 99999 7 -1
Username Port From Latest
kaito **Never logged in**
ubuntu 1000 /bin/bash
mio 1003 /bin/bash
kaito 1004 /bin/bash
mio2 1005 /bin/bash
passwd -S の列は「ユーザー名 状態 最終変更日 最短日数 最長日数 警告日数 無効化までの日数」です。lastlog は Ubuntu 24.04 では使えますが、新しい shadow-utils では lastlog2(util-linux)への移行が進んでいるため、ディストリによってはそちらを使います。
パスワード期限とロック
usermod -L kaito で passwd -S の2列目が L(ロック)になり、usermod -U で P に戻ることを確認しました。chage -E 2026-12-31 -M 90 kaito を実行すると、chage -l の Password expires が Dec 30, 2026、Account expires が Dec 31, 2026 になります。usermod -L はパスワードによるログインだけを止めるため、SSH鍵でのログインも止めたいときは usermod -e 1(アカウント期限を過去にする)を組み合わせます。
よくあるトラブルと対処
「is not in the sudoers file」と表示される
kaito is not in the sudoers file.
| 原因 | 確認 | 対処 |
|---|---|---|
| sudo / wheel グループに入っていない | id kaito |
usermod -aG sudo kaito |
| グループに入れたがログインし直していない | id(引数なし)と id kaito を比べる |
一度ログアウトして入り直す |
sudoers.d のファイル名に . がある |
ls /etc/sudoers.d |
90-kaito のような名前に変更 |
RHEL系で %wheel 行がコメントアウトされている |
grep wheel /etc/sudoers |
visudo でコメントを外す |
グループに追加したのに反映されない
補助グループは、プロセスがログイン時に受け取った値を使い続けます。 実行中のシェルの値と、ユーザーデータベースの値を並べて表示した結果です(kaitoのシェルが動いている間に、root が users グループに追加しています)。
before: kaito sudo devteam
after (process): kaito sudo devteam
after (db): kaito sudo users devteam
new login: kaito sudo users devteam
id -Gn(引数なし)は今のプロセスの値、id -Gn kaito はデータベースの値です。新しくログインしたシェルで初めて反映されるので、SSHで入り直すか、su - kaito で新しいログインシェルを開きます。一時的に今のシェルで使いたいなら newgrp sudo でも切り替えられます。
usermod -G で既存のグループが外れた
id kaito
usermod -G devteam kaito
id kaito
uid=1004(kaito) gid=1004(kaito) groups=1004(kaito),27(sudo),1006(devteam)
uid=1004(kaito) gid=1004(kaito) groups=1004(kaito),1006(devteam)
-a なしの -G は「補助グループをこの内容にする」という置き換えです。 sudo グループが外れたので、usermod -aG sudo kaito で戻しました。1人ずつ追加・削除するなら gpasswd -a / gpasswd -d を使うと、置き換えが起きません。
sudoersを壊してsudoが使えなくなった
visudo を通さずに編集して構文エラーが入ると、sudo が使えなくなります。
/etc/sudoers.d/90-mio:1:24: syntax error
root で入れる手段があれば、visudo -c でエラーの場所を確認して直します。root パスワードを設定していない Ubuntu では、pkexec visudo が使える環境もあります。日頃から visudo -f か「visudo -cf → install -m 0440」の手順で編集すると、この状態を避けられます。
ホームを消し忘れた・UIDが再利用された
-r なしで userdel すると、ホームが残ります。
useradd -m tmpuser; userdel tmpuser
ls -ld /home/tmpuser
drwxr-x--- 2 1001 1002 4096 Oct 1 23:35 /home/tmpuser
所有者が名前ではなく数字(UID)で表示されます。次に作ったユーザーが同じUIDになると、そのユーザーがこのファイルを所有する形になるため、削除時は userdel -r にするか、残す場合は所有者を変更しておくと整理しやすくなります。所有者のいないファイルは find / -xdev -nouser で探せます。
sudoできないときの切り分けフロー
flowchart TD
A[sudoできない] --> B{エラー文は?}
B -->|is not in the sudoers file| C{id ユーザー名 に sudo/wheel がある?}
C -->|ない| D[usermod -aG sudo ユーザー名]
C -->|ある| E{今のシェルの id に出る?}
E -->|出ない| F[ログインし直す / newgrp]
E -->|出る| G[sudoers の %sudo 行を確認]
B -->|is not allowed to execute| H[sudo -l で許可コマンドとフルパスを確認]
B -->|syntax error| I[root で visudo -c → 該当行を修正]
B -->|a password is required| J[NOPASSWD の有無を確認 / -n を外す]
SSH鍵での初回ログインの要点
新しいユーザーには鍵認証でログインしてもらうと管理しやすくなります。要点は「.ssh は700、authorized_keys は600、所有者は本人」です(鍵の作り方は別記事「SSH鍵の作成とGitHub接続」で扱っています)。
install -d -m 700 -o kaito -g kaito /home/kaito/.ssh
install -m 600 -o kaito -g kaito /dev/null /home/kaito/.ssh/authorized_keys
# 公開鍵(ssh-ed25519 AAAA... の1行)を追記する
ローカルからは ssh-copy-id kaito@サーバー でも登録できます(その時点でパスワードログインが許可されている必要があります)。
ユーザーを削除して後片付けする
userdel -r kaito
deluser --remove-home mio
groupdel devteam
rm -f /etc/sudoers.d/90-mio
userdel: kaito mail spool (/var/mail/kaito) not found
info: Looking for files to backup/remove ...
info: Removing files ...
warn: `/usr/bin/crontab' not executed. Skipping crontab removal. Package `cron' required.
info: Removing user `mio' ...
mail spool ... not found はメールスプールが元々作られていないという案内で、削除自体は成功しています(終了コード0)。sudoers.d にユーザー用のファイルを置いた場合は、ユーザー削除と一緒にファイルも消しておくと、同じ名前のユーザーを後で作ったときに権限が引き継がれることを防げます。
よくある質問
Q. useradd と adduser はどちらを使えばよいですか?
A. Ubuntu / Debian で手作業なら adduser が手軽です。スクリプトや RHEL系と共通の手順書では、useradd -m -s /bin/bash と明示する形にすると、ディストリの既定値に左右されず同じ結果になります。
Q. sudo グループに入れるのと sudoers.d にファイルを置くのは、どちらがよいですか?
A. 全権限を渡すならグループが簡単で、id だけで状態がわかります。特定コマンドだけ許可する、パスワードなしで実行させる、といった細かい設定は /etc/sudoers.d/ のファイルで行います。両方を組み合わせることもできます。
Q. NOPASSWD は付けても大丈夫ですか? A. 自動化用のアカウントや、許可するコマンドを限定した場合に向いています。全コマンドに付ける場合は、SSH鍵認証のみにする、パスワードログインを無効にするなど、ログイン側の対策と組み合わせると安心です。
Q. /etc/sudoers.d/ のファイルのパーミッションはいくつにしますか?
A. 0440、所有者 root:root です。検証では 0644 のとき visudo -c が bad permissions, should be mode 0440 を出して失敗しました。install -m 0440 で配置すると一度で揃います。
まとめ
- 基本は
useradd -m -s /bin/bash→passwd→usermod -aG sudo(RHEL系はwheel) - Ubuntu の
useraddは-mなしだとホームが作られず、シェルは/bin/shになる - 権限を絞るなら
/etc/sudoers.d/に.を含まない名前で置き、visudo -cf→install -m 0440 - コマンド限定はフルパスで、エディタ等は
sudoeditを使う - 確認は
id・getent・sudo -l -U、パスワード状態はpasswd -S・chage -l - グループ変更は再ログインで反映、
usermod -Gは-aを付けて追加にする - 削除は
userdel -rと sudoers.d のファイル削除をセットで
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「Linuxユーザー追加とsudo権限付与|useradd手順と確認コマンド一覧」
株式会社RJCでは、Linuxのユーザー管理と権限設計の基本を仲間と学び合っています。こうした知識を共有しながら、日々技術を磨いています。
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。