簡単で迅速な質問:
kevin@pc:/usr/lib/jvm$ ls -l
total 8
lrwxrwxrwx 1 root root 25 Feb 20 17:31 default-java -> java-1.11.0-openjdk-amd64
lrwxrwxrwx 1 root root 21 Apr 23 20:34 java-1.11.0-openjdk-amd64 -> java-11-openjdk-amd64
drwxr-xr-x 7 root root 4096 Jun 12 15:25 java-11-openjdk-amd64
drwxr-xr-x 8 668 668 4096 Jun 12 12:12 jdk-11.0.3
この668ユーザーは誰/何ですか?このマシンを使う人は私だけです。
cat /etc/passwd | grep 668
668番は表示されません。
追加情報:GUIを介してjdk-11.0.3_linux-x64_bin.debをインストールしました。
答え1
存在しないユーザーのファイル/ディレクトリを見ているようです。 Linuxは、主に名前ではなく数字を使用してユーザーを表します。ユーザー名は実際に番号を検索することです。 UID(数値)が(または他のnsswitchメカニズム)にない場合、/etc/passwd
ファイルがその数値ユーザーIDに属するのを防ぐことはできません。
理由の例は次のとおりです。
- 一部の手順では、uidを持つユーザーが存在する可能性がありますが、
668
そのユーザーは削除されました。 - 名前の代わりにUIDを使用してアーカイブ(tarファイルなど)を抽出します。
- 所有権のみを設定してください
chown
- 他のコンピュータのハードドライブの挿入
答え2
GUI経由でjdk-11.0.3_linux-x64_bin.debをインストールしました。
デフォルトのアセンブリファイル(tarの場合はアーカイブラと呼ばれる)からファイルを抽出する「tar」ユーティリティと他のプログラムには、通常2つのユーザーIDモードがあります。 1)抽出されたすべてのファイルが抽出を実行しているユーザーに属するようにします。 2) マスターファイルの作成時に存在していたユーザーIDを復元します。モード 2 にはルートアクセスが必要です。まず、問題は、ユーザーIDがユーザーとして保存されることです。数字、テキストの代わりに。このアーカイブが作成されたとき、jdkディレクトリはユーザー番号668に属していました。しかし、2番目に、基本ファイルにテキスト名(「bob」など)が含まれていても、コンピュータに「bob」がなく、その名前があっても何もないため、あまり役に立ちません。 jdkに関連しており、jdkを削除および変更するために自動的にアクセスしないでください。
(アーカイブにユーザーID番号が含まれていることは役に立たないようですが、tarを使用してローカルシステムでファイルをスナップショット、保存、移動することもできます。アーカイブからファイルを抽出するときは、まだ同じユーザーでなければなりません。
したがって、最終的にインストールGUIが復元してはならないユーザーIDを復元するのに間違いを犯したと言いたいと思います。代わりに、すべてのファイルのユーザーIDを別のIDに設定する必要があります。