Ubuntuでユーザ削除をする際はroot権限でdeluser
コマンドを実行します。
設定ファイル確認
まずdeluser
コマンドの設定ファイルを確認します。
cat /etc/deluser.conf
設定例
# /etc/deluser.conf: `deluser' configuration.
# Remove home directory and mail spool when user is removed
REMOVE_HOME = 0
# Remove all files on the system owned by the user to be removed
REMOVE_ALL_FILES = 0
# Backup files before removing them. This options has only an effect if
# REMOVE_HOME or REMOVE_ALL_FILES is set.
BACKUP = 0
# target directory for the backup file
BACKUP_TO = "."
# delete a group even there are still users in this group
ONLY_IF_EMPTY = 0
# exclude these filesystem types when searching for files of a user to backup
EXCLUDE_FSTYPES = "(proc|sysfs|usbfs|devpts|tmpfs|afs)"
各設定項目の意味は以下の通りです。
項目 | 説明 | 設定例 |
---|---|---|
REMOVE_HOME | ユーザー削除時にホームディレクトリとメールスプールを削除する。 | 0:無効,1:有効 |
REMOVE_ALL_FILES | 削除するユーザーが所有するシステム上のすべてのファイルを削除する。 | 0:無効,1:有効 |
BACKUP | 削除する前にファイルをバックアップする。このオプションは、REMOVE_HOMEまたはREMOVE_ALL_FILESが設定されている場合にのみ有効です。 | 0:無効,1:有効 |
BACKUP_TO | バックアップファイルのターゲットディレクトリ。 | 「.」の場合はコマンドを実行したカレントディレクトリ |
ONLY_IF_EMPTY | グループに所属するユーザーがいない場合グループを削除する。 | 0:無効,1:有効 |
EXCLUDE_FSTYPES | バックアップするユーザーのファイルを検索する際、これらのファイルシステムタイプを除外する。 | (proc|sysfs|usbfs|devpts|tmpfs|afs) を指定した場合、これらのディレクトリを除外できる。 |
構文(deluser)
deluserコマンドの構文は以下の通りです。
sudo deluser [削除したいユーザ名]
REMOVE_HOME
などの項目が無効(0)の場合、アカウント情報だけを削除する挙動になります。
設定ファイルが無効のままホームディレクトリ・メールスプールの削除やバックアップをしたい場合は、コマンドにオプションを以下のように指定します。
# ホームディレクトリとメールスプールのデータを削除
sudo deluser --remove-home [削除したいユーザ名]
# ホームディレクトリとメールスプールのデータを削除(バックアップ有)
sudo deluser --remove-home --backup [削除したいユーザ名]
sudo deluser --remove-home --backup-to [バックアップディレクトリ] [削除したいユーザ名]
# ユーザが所有するすべてのデータを削除
sudo deluser --remove-all-files [削除したいユーザ名]
# ユーザが所有するすべてのデータを削除(バックアップ有)
sudo deluser --remove-all-files --backup [削除したいユーザ名]
sudo deluser --remove-all-files --backup-to [バックアップディレクトリ] [削除したいユーザ名]
オプション(deluser)
指定するオプションの意味は以下の通りです。
オプション | 意味 |
---|---|
—remove-home | ユーザーのホームディレクトリとメールスプールを削除する。 |
—remove-all-files | ユーザーが所有するすべてのファイルを削除する。 |
—backup | 削除する前にファイルをバックアップする。 |
—backup-to | バックアップ先のディレクトリを指定する。 |
オプションを調べる
他オプションを調べる際は、deluser
に-help
を指定してください。
deluser -help
ユーザ削除(deluser)
実行コマンド(ユーザ削除)
test-user
ユーザを削除する場合は、以下のように指定します。
sudo deluser test-user
実行結果例(ユーザ削除)
Removing user `test-user' ...
Warning: group `test-user' has no more members.
Done.
削除前後の確認
削除前(deluser実行前)
deluser実行前に以下の通り、test-user
ユーザが存在することを確認しました。
# passwdファイル確認
$ cat /etc/passwd | grep test-user
test-user:x:1001:1001:,,,:/home/test-user:/bin/bash
# ホームディレクトリ確認
$ ls -ld /home/test-user
drwxr-x--- 2 test-user test-user 4096 Aug 31 21:23 /home/test-user
# ログイン確認
$ sudo su - test-user
$ whoami
test-user
削除後(deluser実行後)
deluser実行後に以下の通り、test-user
ユーザが削除されたことを確認しました。
# passwdファイル確認(結果なし)
$ cat /etc/passwd | grep test-user
$
# ホームディレクトリ確認(未削除のためディレクトリあり)
$ ls -ld /home/test-user
drwxr-x--- 2 1001 1001 4096 Aug 31 21:26 /home/test-user
# ログイン確認(不可)
$ sudo su - test-user
su: user test-user does not exist or the user entry does not contain all the required fields
「user test-user is currently used by process XXXX」となった場合
削除対象ユーザのプロセスが使われていると削除できません。
TeraTerm等で該当ユーザを操作している場合はログアウトしてから再度コマンドを試してください。
$ sudo deluser test-user
Removing user `test-user' ...
Warning: group `test-user' has no more members.
userdel: user test-user is currently used by process 13372
/usr/sbin/deluser: `/sbin/userdel test-user' returned error code 8. Exiting.
以下のように該当プロセスを確認し、問題なければkillしてから再実行する方法もあります。
$ ps -f 13372
UID PID PPID C STIME TTY STAT TIME CMD
test-us+ 13372 1 0 21:31 ? Ss 0:00 /lib/systemd/systemd --user
$ sudo kill 13372
$
$ ps -f 13372
UID PID PPID C STIME TTY STAT TIME CMD
$
userdelコマンドとの違い
類似コマンドにuserdel
がありますが、違いは以下の通りでdeluser
コマンドは設定ファイルで削除やバックアップ等の機能を細かく設定できます。
項目 | userdel | deluser |
---|---|---|
ホームディレクトリとメールスプールの削除 | 〇 | 〇 |
ユーザが所有するすべてのファイルを削除 | × | 〇 |
削除データのバックアップ | × | 〇 |
一般的には、Debian/Ubuntu系のシステムではdeluser
を使用し、他のディストリビューションではuserdel
が使われることが多いです。
userdelコマンドの使い方は、こちらのリンクを参照してください。
まとめ
- deluserコマンドの設定ファイル:
/etc/deluser.conf
でホームディレクトリ削除やバックアップ有無などを設定できる。 - 設定ファイル以外にもオプションを指定することも可能。
Ubuntuでユーザを追加する場合は、こちらのリンクを参照してください。
確認した環境
22.04.3 LTS (Jammy Jellyfish)
以上で本記事の解説を終わります。
よいITライフを!