Ubuntuでユーザを削除する方法について説明します。
ユーザの削除
Ubuntuでユーザを削除する場合は下記どちらかのコマンドを使用します。
deluser ユーザ名 userdel ユーザ名
どちらのコマンドもオプションを指定することで、ユーザのホームディレクトリやデータを削除したりすることが出来ます。
ユーザの削除は間違えると影響が大きいので、実際にユーザの削除を行う前にテストユーザを作成し、そのユーザを削除してコマンドの動作について確認してみることをおすすめします。
deluser
deluserコマンドについて説明をしていきます。
deluserは設定ファイルである/etc/deluser.confを読み込んでユーザの削除を行いますので、事前に設定内容を確認しておいて下さい。
Ubuntu Server 22.04 LTSの初期設定は下記のように設定されていて、ホームディレクトリやメールスプールデータの削除が無効になっています。
$ 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が有効化されている場合、BACKUP_TOで設定された場所に削除ユーザのデータをバックアップする設定(0:無効,1:有効)
- BACKUP_TO
- BACKUPが有効化されている場合、バックアップデータを作成する場所の設定("."はコマンドを実行したディレクトリ)
- ONLY_IF_EMPTY
- グループに所属するユーザーがいない場合グループを削除する設定(0:無効,1:有効)
- EXCLUDE_FSTYPES
- バックアップを作成する際に除外するファイルシステムタイプの設定
この設定ファイルでホームディレクトリやメールスプールの削除が有効化されていないので、オプションを指定せずにdeluserコマンドを実行するとアカウント情報だけを削除するという動作になります。
deluserコマンドの使い方
ユーザのアカウント情報だけを削除する場合、削除するユーザ名を指定しdeluserコマンドを実行します。
$ sudo deluser ユーザ名
この場合、削除するユーザのホームディレクトリやメールスプールのデータは残ったままになります。
残っているデータを削除する場合は手動でそれぞれを削除する必要があります。
わざわざ手動でデータを削除するのは面倒だと感じるかもしれませんが、削除するユーザの間違いや、後で必要なデータがまだあったということもあるので、一定期間データを保存しておくことをおすすめします。
ちなみに、私はバックアップ用のディレクトリを作成して、そこにデータをバックアップして一定期間保管した後にバックアップデータを削除するいう運用をしています。
ホームディレクトリとメールデータを削除したい場合
ホームディレクトリとメールスプールのデータを削除したい場合は--remove-homeオプションを指定します。
--backupや--backup-toオプションも合わせて指定することで、削除対象となるデータのバックアップを行ってくれます。
- --backup deluserコマンドを実行したディレクトリにバックアップを作成する
- --backup-to バックアップを指定したディレクトリに作成する
削除したデータは元に戻すことは出来ないため、--remove-homeオプションを使用する場合は--backupや--backup-toオプションも合わせて使用しデータのバックアップ作成することをおすすめします。
バックアップされたデータは一定期間保存しておいて、本当に必要無いデータなのかを確認するようにしましょう。
$ sudo deluser --remove-home --backup ユーザ名 $ sudo deluser --remove-home --backup-to ディレクトリ ユーザ名
これでバックアップデータが作成され、その後にホームディレクトリやメールデータは削除されます。
実行例
ユーザアカウントのみ削除
実際に何もオプションを指定せずにユーザ(user_001)を削除してみます。
$ sudo deluser user_001 Removing user `user_001' ... Warning: group `user_001' has no more members. Done.
ユーザが削除されたことの確認
削除したユーザが存在していないことは/etc/passwdにユーザアカウントが無いことを確認したり、idコマンドやsuコマンドで確認することができます。
$ grep user_001 /etc/passwd $ id user_001 id: ‘user_001’: no such user $ su - user_001 su: user user_001 does not exist or the user entry does not contain all the required fields
ホームディレクトリが残っていることの確認
削除したユーザのホームディレクトリだったものは残っていますが、ユーザのアカウント情報は削除されているのでディレクトリの所有者情報については、対応するユーザが存在しないのでuidとgidの数字表示になっています。
$ ls -l /home | grep user_001 drwxr-x--- 2 1001 1001 4096 Sep 12 10:52 user_001
ホームディレクトリやメールスプールデータも消去 --remove-home
--remove-homeオプションを使用してホームディレクトリやメールデータを消去する実行例です。
バックアップデータを作成 --backup
--remove-homeオプションと同時に--backupオプションも使用して、バックアップデータを作成してからデータを削除するようにします。
ユーザ名.tar.gzといった名前でホームディレクトリとメールスプールをバックアップ作成してくれます。
$ sudo deluser --remove-home --backup user_001 Looking for files to backup/remove ... Backing up files to be removed to . ... backup_name = ./user_001.tar /bin/tar: Removing leading `/' from member names /bin/tar: Removing leading `/' from hard link targets Removing files ... Removing user `user_001' ... Warning: group `user_001' has no more members. Done.
--backupオプションを指定した場合は、バックアップデータは、deluserコマンドを実行したディレクトリに作成されます。
$ ls user_001.tar.gz
データをリストアしたい場合は、バックアップデータを解凍して下さい。
$ sudo tar xzfv user_001.tar.gz home/user_001/.bash_logout home/user_001/dead.letter home/user_001/.profile home/user_001/test.txt home/user_001/.bashrc home/user_001/.bash_history
作成場所を指定してバックアップ --backup-to
--remove-homeオプションと同時に--backup-toオプションを使用すると、バックアップの作成場所を指定することが出来ます。
まず、/var/delusre_backupディレクトリを作成して、そこをバックアップデータの作成場所として指定します。
$ sudo mkdir /var/delusre_backup $ sudo deluser --remove-home --backup-to /var/delusre_backup user_001 Looking for files to backup/remove ... Backing up files to be removed to /var/delusre_backup ... backup_name = /var/delusre_backup/user_001.tar /bin/tar: Removing leading `/' from member names /bin/tar: Removing leading `/' from hard link targets Removing files ... Removing user `user_001' ... Warning: group `user_001' has no more members. Done.
バックアップデータは指定したディレクトリに作成されています。
$ ls -l /var/delusre_backup/ total 4 -rw------- 1 root root 2271 Sep 12 20:50 user_001.tar.gz
userdel
userdelはとてもシンプルなコマンドで、動作としては下記の2種類のみとなります。
- userdel ユーザ (アカウント情報のみ削除)
- userdel -r ユーザ (ホームディレクトリ等のデータも合わせて削除)
私のおすすめとしては、アカウント情報のみ削除した後にデータをバックアップ用ディレクトリに移動させて、一定期間後に問題がないことを確認したあとでデータを削除するという運用をおすすめします。
-rオプションを使用してホームディレクトリやメールスプールのデータなどを削除する際には、下記のことを十分に確認してから作業を行って下さい。
- 削除対象ユーザに間違いがないか
- 後で必要なデータは残っていないか
削除してしまったデータは元に戻すことが出来ません!
deluserとは違いデータ削除の際にバックアップを自動で行ってくれる機能が無いので、データのバックアップは手動で行う必要があります。
実行例
アカウント情報のみ削除
user_001というユーザのアカウント情報のみ削除します。
$ sudo userdel user_001
user_001のアカウント情報が削除されていることを確認します。
今回はアカウント情報の削除確認方法として/etc/passwdの確認、id、suコマンドによる3通りで確認していますが、どれか1種類での確認で問題ありません。
$ grep user_001 /etc/passwd $ id user_001 id: ‘user_001’: no such user $ su - user_001 su: user user_001 does not exist or the user entry does not contain all the required fields
ホームディレクトリは削除されず残っています。
$ ls -l /home | grep user_001 drwxr-x--- 2 1001 1001 4096 Sep 12 15:17 user_001
ホームディレクトリやメールスプールデータの削除 -r
削除したデータは元に戻すことは出来ませんので、この作業を行う場合は十分に注意して下さい。
-rオプションを使って、user_001のアカウント情報とホームディレクトリ等のデータを削除します。
今回はメールスプールのデータがなかったのでnot foundと表示されています。
$ sudo userdel -r user_001 userdel: user_001 mail spool (/var/mail/user_001) not found
ホームディレクトリも削除されていることが確認できました。
$ ls -l /home | grep user_001
コメント