我有两台共享主目录的 ubuntu 服务器。server1 上的 /home 目录被挂载为 server2 上的 /home 目录。当我尝试授予新用户访问这两台服务器的权限时,我遇到了问题。我在每台服务器上使用相同的用户名执行 adduser 命令。但是当我这样做时,UID 不匹配,因此当使用 server2 上的帐户访问主目录时,用户最终无权访问其主目录中的文件。
在服务器 1 上创建了用户及其主目录。(一切看起来都很好)
selah@server1:~$ tail -n 2 /etc/passwd
dfulgon:x:1083:1087:,,,:/home/dfulgon:/bin/bash
swartp:x:1085:1089:,,,:/home/swartp:/bin/bash
selah@server1:~$ ll -a /home/dfulgon | tail -n 3
-rw-rw---- 1 dfulgon dfulgon 25 Jun 2 13:41 .my.cnf~
-rw-r--r-- 1 dfulgon dfulgon 675 Jun 2 13:35 .profile
drwxrwxr-x 2 dfulgon dfulgon 4096 Jun 2 14:27 .ssh/
在服务器 2 上创建了同名的用户帐户,但使用了另一台服务器的主目录:(权限混乱,指向错误的用户)
selah@server2:~$ tail -n 2 /etc/passwd
bslf:x:1083:1087:,,,:/home/bslf:/bin/bash
dfulgon:x:1087:1091:,,,:/home/dfulgon:/bin/bash
selah@server2:~$ ll -a /home/dfulgon | tail -n 3
-rw-rw---- 1 bslf bslf 25 Jun 2 13:41 .my.cnf~
-rw-r--r-- 1 bslf bslf 675 Jun 2 13:35 .profile
drwxrwxr-x 2 bslf bslf 4096 Jun 2 14:27 .ssh/
有没有一个好的方法可以克服这个问题,同时又能保持共享主目录的便利性?
答案1
最简单的做法是在某些中央数据库中创建您的帐户。如今,几乎每个人都为此建立了某种形式的 ldap 数据库。但如果您想采用不安全的老式方法,您也可以考虑 NIS。(不要)。
另一个选择是使用配置管理工具来创建您的帐户,并保持 UID 同步。因此,您可以使用 puppet 创建您的帐户并定义您想要的特定 UID/GID。
您可以使用 NFS id 映射器来执行一些操作以在系统之间转换 id,但这可能会成为一场管理噩梦。
答案2
我们采用的解决方案:
检查两个 /etc/passwd 文件并选择下一个合适的 GID 和 UID。然后在用户创建过程中指定它们,如下所示。
addgroup -g $GID $username
adduser -g $GID -u $UID $username