新しいユーザーが削除されたユーザーからファイルを継承したのはなぜですか?


24

だから私は宿題として本で練習をしなければなりませんでした。まず、次のようなユーザーを作成する必要がありました。

useradd -c "Steven Baxter" -s "/bin/sh" sbaxter

次に、いくつかのファイルを/home/sbaxterディレクトリに追加する必要がありました。

touch /home/sbaxter/ some.txt new.txt files.txt

次に、sbaxterユーザーを削除し、という名前の新しいユーザーを作成する必要がありましたmjane。驚いたことにfind /home/ -user mjane、私が走ったとき、新しいユーザーmjaneはsbaxterの古いファイルをすべて所有していましたが、どうなりましたか?

回答:


41

悪魔は詳細にあり、useraddmanページにあります(これはを発行することで確認できますman 8 useradd)。

   -u, --uid UID
       The numerical value of the user's ID. This value must be unique,
       unless the -o option is used. The value must be non-negative. The
       default is to use the smallest ID value greater than or equal to
       UID_MIN and greater than every other user.

そのため、パスワードファイルでは、デフォルトで未使用の最小のuid(他のユーザーよりも大きい)が使用されます。sbaxterを削除すると彼がpasswdファイルから削除されたので、彼のuidは「無料」でmjaneに割り当てられます(uidのuseradd選択は両方のユーザーがuseraddコマンドを使用した時点で同じです)。

ディスク上のファイルはuidのみを保存し、ユーザー名の変換は保存しません(この変換はパスワードファイルで定義されているため)。これを確認するには、発行ls -lnしてuid所有権ファイルの内容を確認します。

アカウントを削除するのではなく、無効にすることを実際にお勧めします。ほとんどのLinuxディストリビューションでアカウントusermod -L -e today <username>をロックするには、を使用します。パスワードをロックし、アカウントの有効期限を今日に設定します(アカウントの有効期限はで確認できますchage -l)。


2
...これはひどいセキュリティ欠陥のようです。それを回避する方法はありますか?
BlueRaja-ダニーPflughoeft

6
@ BlueRaja-DannyPflughoeftこれはセキュリティ上の欠陥ではありません。ユーザーは、ユーザー名ではなくユーザーIDによって識別されます。アカウントを削除する場合、そのファイルをすべて削除する必要があります(つまり、ユーザーのホームディレクトリだけでなく、このユーザーIDが所有するすべてのファイル)。これは、アカウントを削除する通常の手順の一部です。
ジル 'SO-悪であるのをやめる'

2
@OlivierDulac これはバックアップと呼ばれます。または、データを保持する必要がある限り、アカウントをロックしますが、削除しないでください。結局のところ、データを保持する必要がある場合は、引き続きアカウントが必要です。
ジル 'SO-悪であるのをやめる'

1
ほとんどのLinuxディストリビューションでアカウントusermod -L -e today <username>をロックするには、を使用します。パスワードをロックし、アカウントの有効期限を今日に設定します(アカウントの有効期限はで確認できますchage -l)。
Dravスローン

5
今日の標準では、これはセキュリティ上の欠陥です。例が示すように、これは、人間をファイルに関連付けることができないことを意味します。確かに、人間はアカウントに強く関連付けられている可能性がありますが、UIDのリサイクルにより、human <-> account <-> fileの関連付けが崩れます。この場合も、Unixにはこの点で優れたセキュリティはありませんでした(rootほとんど何でも偽造できます)。そのためには監査証跡が必要です。
–MSalters

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.