/etc/passwdを繰り返し、各UIDをname-UID値の入力ファイルによって提供される新しい値に変更するbashスクリプトを作成しました。追加の警告で実行中のプロセスがあることを確認しながら、次のように書きました。
# Mod user and group
usermod -u $uid $login
groupmod -g $uid $login
find /data -group $old_uid -exec chgrp -h $login {} \;
find /data -user $old_gid -exec chown -h $login {} \;
残念ながら、ほとんどのユーザーは積極的に使用していない場合でも、自分のコンピュータにいくつかのプロセスがあることがわかりました。プロセスの実行中に上記のコードを実行するのはどれほど危険ですか?
答え1
これはかなり危険な仕事です。これを行う必要がある場合は、そのユーザーに対して何も実行しないようにできるすべてのタスクを実行してください。
- 可能な限り多くの警告で何をしているのか、いつしているのかをユーザーに教えてください。
- タスクを開始する前に、実行中のすべてのプロセスを終了するように慎重に依頼してください。
- 作業中は、すべてのユーザーのログインを一時的にブロックしてください。
- 始める前にすべてのユーザープロセスとセッションを強制終了します。
だから……。議論のため、次にのみusermod
影響groupmod
を与えます。
- ユーザーがログインしたときにユーザーのセッションに割り当てられたUID、GID、およびグループ
chgrp
または、操作に似た検索に使用されます。sudo
- リバースルックアップを使用するなど
ls -l
実行中のすべてのプロセスは、以前とまったく同じUIDとGIDを持ちます。ユーザーが何かを実行している間にユーザーを変更した場合、これは本当に良いことではありません。
- まだ開いている古いログインセッションは、古いUIDとGIDを保持します。 UIDとGIDをリサイクルすると、効果的に他のユーザーとしてログインします。
- 現在ログインセッションに接続されていない実行プロセスは、事実上「不良」状態になります。ユーザーはもうログインして殺すことはできません。おそらく、もはやどのユーザーも以下を除いてはできません。
root
- ファイルの所有権も変更すると、実行中のプロセスが処理中のデータへのすべてのアクセス権を失い、競合が発生する可能性があります。