如何在 Linux 上有效地为用户添加别名

如何在 Linux 上有效地为用户添加别名

在 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

相关内容