ウェブサイト検索

Linux のホーム ディレクトリでユーザー アカウントを削除する方法


このチュートリアルでは、Linux システム上でユーザーのアカウントとそのユーザーのホーム ディレクトリを削除する手順を説明します。

Linux システムでユーザー アカウントを作成して管理する方法については、以下のリンクから次の記事をお読みください。

  1. Linux でユーザー アカウントを管理する 15 の「useradd」コマンドの例
  2. Linuxでユーザーアカウント名を変更/修正する15の「usermod」コマンド例
  3. Linux でファイル権限を使用してユーザーとグループを管理する方法

Linux のシステム管理者は、ユーザー アカウントが長期間休止状態になった場合、またはユーザーが組織や会社を辞めた場合、またはその他の理由でユーザー アカウントを削除する必要がある場合があります。

Linux システムでユーザー アカウントを削除する場合は、ホーム ディレクトリを削除して、新しいシステム ユーザーまたは他のサービス用にストレージ デバイス上のスペースを解放することも重要です。

ユーザーアカウントの削除/ホームディレクトリからの削除

1. デモンストレーションの目的で、まずシステム上にユーザー tecmint とユーザー linuxsay という 2 つのユーザー アカウントを作成し、それぞれのホーム ディレクトリを作成します。 adduser コマンドを使用して、それぞれ /home/tecmint/home/linusay を使用します。

adduser tecmint
passwd tecmint

adduser linuxsay
passwd linuxsay

上のスクリーンショットでは、adduser コマンドを使用して Linux 上にユーザー アカウントを作成しています。 useradd コマンドを使用することもできます。どちらも同じであり、同じ仕事を行います。

2. 次に、deluser (Debian およびその派生版の場合) と userdel ( RedHat/CentOS ベースのシステムの場合) コマンド。

deluser および userdel コマンドの設定ファイル内のディレクティブは、コマンドの実行時にすべてのユーザー ファイルとディレクトリをどのように処理するかを決定します。

Ubuntu、Kali、Mint などの Debian 派生製品および RHEL/CentOS/Fedora の /etc/deluser.conf である deluser コマンドの設定ファイルを見てみましょう。ユーザーは、/etc/login.defs ファイルを表示できます。

これらの構成の値はデフォルトであり、必要に応じて変更できます。

vi /etc/deluser.conf         [On Debian and its derivatives]
vi /etc/login.defs           [On RedHat/CentOS based systems]

3. ホーム ディレクトリを持つユーザーを削除するには、Linux サーバー マシンで次の手順に従って高度な方法を使用できます。ユーザーはサーバーにログオンすると、サービスを使用し、さまざまなプロセスを実行します。ユーザーはサーバーにログオンしていない場合にのみ効果的に削除できることに注意することが重要です。

Linux でユーザー アカウントをロックする

まず、ユーザー アカウントのパスワードをロックして、ユーザーがシステムにアクセスできないようにします。これにより、ユーザーはシステム上でプロセスを実行できなくなります。

–lock オプションを含む passwd コマンドは、これを実現するのに役立ちます。

# passwd --lock tecmint

Locking password for user tecmint.
passwd: Success

ユーザーの実行中のすべてのプロセスを見つけて強制終了します

次に、ユーザー アカウントの実行中のすべてのプロセスを検索し、次のコマンドを使用してユーザーが所有するプロセスのPID (プロセス ID) を特定してそれらを強制終了します。

# pgrep -u tecmint

1947
1959
2091
2094
2095
2168
2175
2179
2183
2188
2190
2202
2207
2212
2214

次に、次のコマンドを使用して、ユーザー名、PID、PPID (親プロセス ID)、使用されている端末、プロセスの状態、コマンド パスに関するプロセスを完全な形式で一覧表示できます。

# ps -f --pid $(pgrep -u tecmint)

UID        PID  PPID  C STIME TTY      STAT   TIME CMD
tecmint   1947     1  0 10:49 ?        SLl    0:00 /usr/bin/gnome-keyring-daemon --daemonize --login
tecmint   1959  1280  0 10:49 ?        Ssl    0:00 mate-session
tecmint   2091  1959  0 10:49 ?        Ss     0:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session /usr/bin/im-launch mate-session
tecmint   2094     1  0 10:49 ?        S      0:00 /usr/bin/dbus-launch --exit-with-session /usr/bin/im-launch mate-session
tecmint   2095     1  0 10:49 ?        Ss     0:00 //bin/dbus-daemon --fork --print-pid 6 --print-address 9 --session
tecmint   2168     1  0 10:49 ?        Sl     0:00 /usr/lib/dconf/dconf-service
tecmint   2175  1959  0 10:49 ?        Sl     0:02 /usr/bin/mate-settings-daemon
tecmint   2179  1959  0 10:49 ?        Sl     0:47 marco
tecmint   2183     1  0 10:49 ?        Sl     0:00 /usr/lib/gvfs/gvfsd
tecmint   2188  1959  0 10:49 ?        Sl     0:00 mate-panel
tecmint   2190     1  0 10:49 ?        Sl     0:00 /usr/lib/gvfs/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
tecmint   2202     1  0 10:49 ?        S<l    0:20 /usr/bin/pulseaudio --start --log-target=syslog
tecmint   2207  1959  0 10:49 ?        S      0:00 /bin/sh /usr/bin/startcaja
tecmint   2212     1  0 10:49 ?        Sl     0:03 /usr/bin/python /usr/lib/linuxmint/mintMenu/mintMenu.py
tecmint   2214     1  0 10:49 ?        Sl     0:11 /usr/lib/mate-panel/wnck-applet
....

ユーザーの実行中のプロセスをすべて見つけたら、次のように killall コマンドを使用してそれらの実行中のプロセスを強制終了できます。

killall -9 -u tecmint

-9SIGKILL シグナルのシグナル番号です。または、-9 の代わりに -KILL を使用します。 >-u はユーザー名を定義します。

: RedHat/CentOS 7.x バージョンおよび Fedora 21 以降の最近のリリースでは、次のようなエラー メッセージが表示されます。

-bash: killall: command not found

このようなエラーを修正するには、次のように psmisc パッケージをインストールする必要があります。

yum install psmisc       [On RedHat/CentOS 7.x]
dnf install psmisc       [On Fedora 21+ versions]

削除する前にユーザーデータをバックアップする

次に、ユーザー ファイルをバックアップできます。これはオプションですが、将来ユーザー アカウントの詳細とファイルを確認する必要が生じた場合に使用することをお勧めします。

次のように、tar ユーティリティを使用してユーザーのホーム ディレクトリのバックアップを作成しました。

tar jcvf /user-backups/tecmint-home-directory-backup.tar.bz2 /home/tecmint

ユーザーアカウントとファイルの削除/削除

これで、ユーザーとそのホーム ディレクトリを安全に削除できるようになりました。システム上のすべてのユーザー ファイルを削除するには、以下のコマンドの --remove-all-files オプションを使用します。

deluser --remove-home tecmint      [On Debian and its derivatives]
userdel --remove tecmint           [On RedHat/CentOS based systems]

まとめ

Linux システムからユーザーとそのホーム ディレクトリを削除する方法はこれだけです。このガイドは簡単に理解できるものだと思いますが、コメントを残して懸念を表明したり、アイデアを追加したりすることができます。