userdelコマンドはユーザを削除するコマンドになります。userdelコマンドを利用する場合、管理者権限が必要なコマンドになります。
userdelコマンドの利用例
ユーザを削除
userdelコマンドは存在しているユーザを指定することで、そのユーザを削除することができます。
コマンド例と実行結果
1 2 3 4 5 6 |
$ cat /etc/passwd | grep 'testuser' testuser:x:1001:1008::/home/testuser: $ $ sudo userdel testuser $ cat /etc/passwd | grep 'testuser' $ |
/etc/passwdのファイルはユーザ情報を管理しているファイルになります。
ホームディレクトリも同時に削除
(-rオプション)
-rオプションを用いることで、削除したいユーザのホームディレクトリとメールスプール(メールBOX)を同時に削除できます。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 11 |
$ ls -l /home/ 合計 8 drwxr-xr-x 2 testuser testuser 4096 6月 18 09:25 testuser drwxr-xr-x 134 ubuntu ubuntu 4096 6月 18 09:00 ubuntu $ $ sudo userdel -r testuser userdel: testuser mail spool (/var/mail/testuser) not found $ $ ls -l /home/ 合計 4 drwxr-xr-x 134 ubuntu ubuntu 4096 6月 18 09:00 ubuntu |
メールスプールが見つからないという注意メッセージは特に気にしなくても大丈夫です。
削除したいユーザがプロセスを処理している場合
userdelコマンドは削除したいユーザがプロセスを処理している場合、そのユーザを削除することができません。
1 2 |
$ sudo userdel testuser userdel: user testuser is currently used by process 5417 |
-fオプションを用いると強制的にユーザを削除することができますが、システムが不安定になる可能性があるため、おすすめしません。
それでもユーザを削除したい場合は、psコマンド等で動作中のプロセスを確認してから、もしそのプロセスを終了させてもいいならば、killコマンド等でプロセスを削除し、削除したいユーザのプロセスが処理していない状態になってから、userdelコマンドを利用してユーザを削除するとよいでしょう。
1 2 3 4 5 6 7 8 |
$ ps aux | awk '$1~/testuser/' testuser 5417 99.8 0.0 23628 1908 pts/1 R 09:56 10:05 -su testuser 5418 99.9 0.0 23628 1908 pts/1 R 09:56 10:04 -su testuser 5419 99.7 0.0 23628 1908 pts/1 R 09:56 10:03 -su $ $ ps aux | awk '$1~/testuser/{print "sudo kill " $2}' | sh $ ps aux | awk '$1~/testuser/' $ sudo userdel testuser |
ps aux | awk '$1~/testuser/'
は1列目にtestuserという文字列にマッチした行を表示するコマンドになります。
ps aux | awk '$1~/testuser/{print "sudo kill " $2}' | sh
は、上のマッチした行に対して"sudo kill "の文字列とマッチした行の2列目のプロセスIDを合わせて、コマンドを作成し実行しています。
このコマンドでtestuserのプロセスをすべて終了させています。