id 및 whoami 명령은 다른 사용자를 표시합니다.

id 및 whoami 명령은 다른 사용자를 표시합니다.

최근에 이상한 점을 발견하고 이 동작에 대해 설명해 달라고 요청했습니다.

# Ok, I logged in as root

# Am I root? Sure.
╭─root@s1 ~
╰─# whoami && id
root
uid=0(root) gid=0(root) groups=0(root)


# Now i want to log in as user1
╭─root@s1 ~
╰─# su - user1


# What? nginx instead of user1?
╭─nginx@s1 ~
╰─$ whoami && id
nginx
uid=498(nginx) gid=500(user1) groups=500(user1)


# So, what is my home dir?
╭─nginx@s1 ~
╰─$ echo $HOME
/home/user1

따라서 질문은 다음과 같습니다. whoamiid명령이 다른 사용자를 표시하는 이유는 무엇입니까?

나는 이 서버의 관리자가 아니며 그가 서버에 무슨 짓을 했는지는 모르지만 이 질문은 나에게 흥미로웠습니다.

답변1

안전 해요?

이것은 운영 체제를 손상시키지 않으며 nginx를 감시할 수 있습니다(그리고 nginx는 당신을 감시합니다). 운영 체제에 대한 위험보다 인간(따라서 귀하의 질문)에 대한 방해가 더 큽니다.

Unix/Linux 커널의 경우 프로세스와 파일은 사용자 ID로 제어됩니다(단순화를 위해 그룹을 제거하겠습니다).

ps또는 와 함께 사용하면 ls -l이러한 명령( ps및 )은 ID와 사용자 이름이 일치하도록 ls읽습니다 . /etc/passwdID가 여러 번 언급되면 첫 번째 발생에서 중지하는 것이 규칙입니다.

어떻게 두 명의 사용자가 동일한 ID를 가질 수 있나요?

그러나 기본 옵션을 사용하면 useradd이러한 충돌 문제를 방지할 수 있습니다.

  1. useradd기존 ID를 강제로 사용할 수 있습니다 ( -o, --non-unique옵션).
  2. /etc/passwd수동으로 편집하거나 스크립트에 여러 사용자가 포함되도록 할 수 있습니다 .

귀하의 경우 관리자는 의도적으로 이 작업을 수행하지 않았을 가능성이 높습니다. 관리할 호스트가 많은 셸만 있었고 충돌하는 문제가 있는지 확인하지 않았습니다.

nginx호스트를 생성할 때 설치될 수 있으므로(설치 프로세스에서 사용자가 생성됨 nginx) 추가

nginx:x:498:498::/var/www:/bin/false

도착하다/etc/passwd

/etc/passwd그런 다음 나중에 편집 및 mkdir+ 조합을 통해 사용자를 추가하고 chown순서대로 추가하세요.

user1:x:498:500::/home/user1:/bin/zsh
user2:x:499:500::/home/user2:/bin/zsh

도착하다/etc/passwd

누군가 고의로 이런 일을 하는 이유는 무엇입니까?

여러 로그인 셸(예: bash, csh, fish, kde...)을 원할 수 있으며, 이 경우 여러 항목을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

archemar:x:101:101:Archemar:/home/archemar/bash:/bin/bash
arcsh:x:101:101:Archemar:/home/archemar/csh:/bin/csh
arfish:x:101:101:Archemar:/home/archemar/fish:/bin/fish
arkde1:x:101:101:Archemar:/home/archemar/kde1:/bin/bash
arkde2:x:101:101:Archemar:/home/archemar/kde2:/bin/bash

이렇게 하면 다른 로그인을 사용하고 특정 구성 파일을 유지 하며 sudo. chsh명령입니다.

위의 구성은 시스템 관리자가 눈살을 찌푸리게 될 것입니다. 다른 $HOME값은 다른 결과를 생성할 것입니다 PATH=$HOME/bin:..(당신이 찾고 있는 것입니다). 그러나 여전히 공통 부분이 있어야 하며 $PATH결국 구성이 가장 적합하지 않을 것입니다. 가장 간단합니다.

자동화된 소프트웨어 테스트를 실행하고 별도의 디렉터리(이 경우 홈 디렉터리)를 유지하고 테스트 사용자에게 고유 ID를 제공할 수도 있습니다.

그런데 내 말은...

pwck(비밀번호 확인) 경고가 발생합니다.

관련 정보