최근에 이상한 점을 발견하고 이 동작에 대해 설명해 달라고 요청했습니다.
# 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
따라서 질문은 다음과 같습니다. whoami
및 id
명령이 다른 사용자를 표시하는 이유는 무엇입니까?
나는 이 서버의 관리자가 아니며 그가 서버에 무슨 짓을 했는지는 모르지만 이 질문은 나에게 흥미로웠습니다.
답변1
안전 해요?
이것은 운영 체제를 손상시키지 않으며 nginx를 감시할 수 있습니다(그리고 nginx는 당신을 감시합니다). 운영 체제에 대한 위험보다 인간(따라서 귀하의 질문)에 대한 방해가 더 큽니다.
Unix/Linux 커널의 경우 프로세스와 파일은 사용자 ID로 제어됩니다(단순화를 위해 그룹을 제거하겠습니다).
ps
또는 와 함께 사용하면 ls -l
이러한 명령( ps
및 )은 ID와 사용자 이름이 일치하도록 ls
읽습니다 . /etc/passwd
ID가 여러 번 언급되면 첫 번째 발생에서 중지하는 것이 규칙입니다.
어떻게 두 명의 사용자가 동일한 ID를 가질 수 있나요?
그러나 기본 옵션을 사용하면 useradd
이러한 충돌 문제를 방지할 수 있습니다.
useradd
기존 ID를 강제로 사용할 수 있습니다 (-o
,--non-unique
옵션)./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
(비밀번호 확인) 경고가 발생합니다.