在 Linux 中创建用户别名的最佳方法是什么,这样 2 个登录实际上是同一用户?
所以,我可以做(或非常接近的事情):
sudo adduser primary_user
sudo useradd -d /home/primary_user -G primary_user -K UMASK=022 alias_user
sudo passwd alias_user
在此过程开始时,这些用户将进行相同的操作。但是,如果我跑
usermod -aG docker $USER
我不明白别名用户现在如何突然成为 docker 组的一部分。我错过了什么吗?我确实想要 2 个登录名、1 个用户帐户:
jbrown -> jbrown
jbro -> jbrown
这能有效地做到吗?这可能有发行版特定的答案
答案1
用户可以共享他们的UID,从而赋予他们相同的用户权限。
一些快速测试表明,无论您使用哪个别名登录,系统都会将您识别为与数据库中的 UID 匹配的第一个用户passwd
(通常情况下/etc/passwd
,但也可以在高级设置中的其他位置)。
我还没有看到组的行为方式相同,每个别名都需要显式添加到每个组中。看起来,虽然用户是从 UID 映射的,但组看起来是从名称映射的(检查 的内容/etc/group
以了解我的意思)。
基于您开始的内容的快速示例:
#!/bin/sh
USER1=primary
USER2=alias
sudo adduser $USER1
sudo useradd -d /home/$USER1 -G $USER1 -K UMASK=022 --non-unique --uid $(id -u $USER1) --no-create-home --no-user-group $USER2
sudo passwd $USER2
# --non-unique: Allow the creation of a user account with duplicate UID
# --uid: The numerical value of the user's ID
# --no-create-home: Do not create the user's home directory.
# --no-user-group: Do not create a group with the same name as the user.
此时,您应该有两个具有相同 UID 的用户共享相同的主目录,并且都属于该$USER1
组。
要将它们分别添加到docker
组中,您必须单独添加它们:
usermod -aG docker $USER1
usermod -aG docker $USER2
docker
尽管在创建别名时添加组可能更容易:
sudo useradd -d /home/$USER1 -G ${USER1},docker -K UMASK=022 --non-unique --uid $(id -u $USER1) --no-create-home --no-user-group $USER2
作为替代方案,您可以更改 Docker 配置以使用$USER1
已在这些用户之间共享的组(而不是组)进行授权docker
。