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这些命令 (psls) 将读取/etc/passwd以将 id 与用户名进行匹配。如果一个 id 被多次提及,则规则是在第一次出现时停止。

两个用户怎么能有相同的id呢?

但是,默认选项useradd将防止这些相互冲突的问题

  1. 您可以强制useradd使用现有的 id ( -o, --non-uniqueoptions )
  2. 您可以/etc/passwd手动编辑,或者让脚本包含一堆用户

在你的情况下,管理员很可能不是故意这样做的,他们只是有外壳,有很多主机需要管理,并且没有费心去检查是否有冲突的问题。

nginx可能会在创建主机时安装(安装过程将创建 user 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

为什么有人要故意这么做呢?

您可能希望拥有多个登录 shell(例如 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.缺点是有五个不同的密码,这不是切换 KDE 环境的正确方法,并且chsh如果我需要切换 shell,有一个命令。

上面的配置会(应该)被系统管理员皱眉,不同的$HOME值,会产生不同的结果PATH=$HOME/bin:..(这就是你正在寻找的),但你仍然必须有一个共同的部分$PATH,最后你的配置不太可能会最简单。

您还可以运行自动软件测试,并希望保留单独的目录(在本例中为主目录),并为测试用户提供唯一的 ID。

但是,我的意思是...

pwck(密码检查)会发出警告

相关内容