Tutoriel Linux

LinuxにおけるUserdel:間違ったホームディレクトリを削除せずにアカウントを削除する

Débutant2 min de lecture

古い技術者アカウントを削除するか、不要になったローカルユーザーアカウントをクリーンアップする必要があります。コマンド ユーザーデル 単純に見えるが、彼の選択肢は -r 個人フォルダとその中のデータを削除してしまう可能性があります。アカウント名の入力ミスや、通常とは異なるホームディレクトリの設定などが原因で、誤って別のフォルダを削除してしまう恐れがあります。

TuxはLinux上でuserdelを使用して削除するアカウントと個人フォルダをチェックします。
userdelを使用する前に、どのユーザーアカウントと個人フォルダが削除されるかを確認してください。

ローカルアカウントと個人ファイルを確認してください

以下の例では、 アリス 正しいログイン情報を使用してください。まず、複数の情報源でアカウントを確認してください。

getent passwd alice
grep '^alice:' /etc/passwd
id アリス

ゲテント LDAP、SSSD、または別のディレクトリからアカウントを返す場合があります。ユーザーが次のように表示される場合 ゲテント しかし、中にはありません /etc/passwd起動しないでください ユーザーデル 盲目的に: アカウントを管理するディレクトリでアカウントを処理します。ガイド

次に、管理セッションでUIDとホームパスを保存します。

uid=$(id -u alice)
home=$(getent passwd alice | cut -d: -f6)
echo "UID=$uid HOME=$home"
id -nG アリス
sudo ls -ld "$home"

続行する前に出力結果を確認してください。サービスアカウントにはホームディレクトリを設定できます。 /var/lib、 /srv または共有ディレクトリ。プレフィックスだけに頼らないでください。 /家また、自分のSSHアカウントや、アプリケーションで使用されているアカウントを削除していないことを確認してください。

セッション、プロセス、およびスケジュールされたタスクを制御します。

ログイン画面に表示されないアカウントでも、サービス、バックアップ、またはcronジョブが実行されている可能性があります。セッションとプロセスを停止する前に、必ず確認してください。


w
loginctl list-sessions
pgrep -a -u アリス

ビジネスプロセスを発見した場合は、削除する前に、そのサービスを特定し、構成を技術アカウントに転送してください。 キル -9 Linux で殺す 通行止めを申請する方法や、無理やり通行する前に新聞を読む方法を説明します。

また、このログインを参照しているcrontabとsystemdユニットも確認​​してください。

sudo crontab -u alice -l
[:space:]sudo grep -R --line-number '^[]*User=alice[]*$' /etc/systemd/system /usr/lib/systemd/system 2>/dev/null[:space:]

セットアップ USERDEL_CMD で /etc/login.defs cron、at、または印刷ジョブをクリーンアップするスクリプトを起動できますが、すべてのディストリビューションで同じように動作するとは限りません。 login.defs ドキュメント このスクリプトの結果は考慮されないことを確認します ユーザーデルしたがって、アカウントを作成する前に、タスクを明示的に保存または削除してください。

チェック中にパスワード認証を一時的に停止するには:

sudo passwd -l alice

このロックはアクティブなセッションを閉じず、必ずしもSSHキーをブロックするわけではありません。これらのアクセスポイントを個別に確認してください。ガイド Linuxにおけるpasswd この制限について詳しく説明します。

ホームページを開く前に、アカウントファイルを検索してください。

ユーザーのホームフォルダは、ユーザーがファイルを保存できる唯一の場所ではありません。サーバーが使用する場所で、ユーザーのUIDを探してください。

sudo find /home /srv /var/www -xdev -uid "$uid" -print

開始点をボリュームに合わせて調整してください。 -xdev 各検索が別のファイルシステムに渡らないようにするため、影響を受けるデータマウントでコマンドを繰り返してください。 探す / 本番サーバーまたは非常に大規模なネットワークストレージ上で即席で作成された。

データを保持する必要がある場合は、利用可能な容量を確認してから、ホームディレクトリのアーカイブを作成してください。

df -h /root "$home"
sudo du -sh "$home"
sudo tar --one-file-system -C "$(dirname "$home")" -czf "/root/alice-home-$(date +%F).tar.gz" "$(basename "$home")"
sudo tar -tzf "/root/alice-home-$(date +%F).tar.gz" | head

読みやすいアーカイブリストは、テスト済みの復元に代わるものではありません。重要なホームディレクトリについては、普段使用しているバックアップまたはスナップショットを使用し、復元したファイルの一部を別の場所でテストしてください。

ホームディレクトリを保持するか、削除するかを選択してください。

なしの注文 -r システムファイルからアカウントを削除しますが、個人フォルダは保持します。

sudo userdel alice

データが所有者によって検証されていない、または別のアカウントに転送されていない場合は、これが私のデフォルトの選択肢です。後で確認後、ディレクトリを削除できます。

自宅と地域の郵便受けを本当に消したい場合は、以下を使用してください。

sudo userdel -r alice

によると、 ユーザーデルのマニュアルページ、 -r このコマンドはホームフォルダとメールスプールフォルダを削除しますが、他のファイルシステム上のユーザー所有ファイルは削除しません。したがって、このコマンドはUIDを使用して実行されたインベントリを置き換えるものではありません。

使用しないでください アクティブなプロセスを示すメッセージを回避するため。このオプションはセキュリティチェックを無視するため、システムが矛盾した状態になる可能性があります。戻る pgrep問題のサービスを特定し、適切にシャットダウンしてから、削除プロセスを再開してください。

userdel の後に何が残っているか確認してください

変数を保持するために同じシェルセッションを維持する $uid そして $ホーム次に結果を確認します。

getent passwd alice || echo "アカウントが利用できません"
id アリス
pgrep -a -u "$uid"
test -e "$home" && sudo ls -ld "$home" || echo "個人フォルダが見つかりません"
sudo find /home /srv /var/www -xdev -uid "$uid" -ls

id アリス これは、ログインが存在しなくなったことを示しています。古い UID を持つファイルが残っている場合は、フォルダごとにアーカイブ、再割り当て、または削除するかどうかを決定します。 chown -R データの役割を知らずにグローバル化する。