숫자 이름을 가진 Linux 사용자를 찾았지만 누구인지는 찾을 수 없습니다.

숫자 이름을 가진 Linux 사용자를 찾았지만 누구인지는 찾을 수 없습니다.

간단하고 빠른 질문:

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" 유틸리티 및 기타 프로그램에는 일반적으로 두 가지 사용자 ID 모드가 있습니다. 1) 추출된 모든 파일이 추출을 수행하는 사용자에게 속하도록 합니다. 2) 마스터 파일 생성 당시 존재했던 사용자 ID를 복원합니다. 모드 2에는 루트 액세스가 필요합니다. 먼저 문제는 사용자 ID가 사용자로 저장된다는 것입니다.숫자, 텍스트 대신. 이 아카이브가 만들어졌을 때 jdk 디렉터리는 사용자 번호 668에 속해 있었습니다. 그러나 두 번째로, 기본 파일에 텍스트 이름(예: "bob")이 포함되어 있더라도 컴퓨터에 "bob"이 없고 해당 이름이 있어도 아무것도 없을 것이므로 별로 도움이 되지 않습니다. jdk와 관련이 있으며 jdk 삭제 및 수정을 위해 자동으로 액세스되어서는 안 됩니다.

(아카이브에 사용자 ID 번호가 포함되어 있다는 것이 쓸모 없는 것처럼 들리지만 tar를 사용하여 로컬 시스템에서 파일을 스냅샷, 저장 및 이동할 수도 있다는 점을 명심하십시오. 여기서 아카이브 파일이 생성될 때 제공된 사용자 ID 번호는 나중에 아카이브에서 파일을 추출할 때 여전히 동일한 사용자여야 합니다.

따라서 궁극적으로 설치 GUI가 복원해서는 안 될 사용자 ID를 복원하는 데 실수를 했다고 말하고 싶습니다. 대신 모든 파일의 사용자 ID를 다른 ID로 설정해야 합니다.

관련 정보