我对 UID 的理解是,类 Unix 操作系统为每个用户分配一个唯一的正整数。系统通过 UID 来识别每个用户,而用户名通常仅用作人类的界面。
两个用户怎么会拥有相同的 UID,这对我的系统和软件包来说不是冲突吗?
root@kdc:~# id test12
uid=1005(test10) gid=1000(server) groups=1005(test10)
root@kdc:~# id test13
uid=1005(test10) gid=1000(server) groups=1005(test10)
root@kdc:~#
我添加了两个具有相同 UID 和 GID 的用户test12
: test13
输出/etc/passwd
:
client@kdc:~$ cat /etc/passwd | grep test12
test12:x:1005:1000::/home/test12:/bin/sh
client@kdc:~$ cat /etc/passwd | grep test13
test13:x:1005:1000::/home/test13:/bin/sh
我通过以下方式添加了用户useradd -ou 1005 -g1000 username.
我很困惑这样做的目的是什么,它会影响权限和用户日志等吗?那么现在如果添加了一个用户uid=0
,gid=0
他是否拥有像 root 帐户那样的权限?
答案1
这其实是有充分理由的。例如,我曾经在一个实验室里工作,我们每个人都有自己的电脑,但我们的$HOME
电脑在服务器导出的共享驱动器中。所以,我的$HOME
电脑是
/users/terdon
由于该/users
文件夹实际上不在我的本地计算机上,而是通过 NFS 导出的,因此对于任何 I/O 繁重的分析,我都会使用存储在本地硬盘上的数据,以免给实验室的网络带来负担。为此,我和其他所有人都有两个用户:一个是系统范围的用户,另一个是该机器本地的用户。本地用户的家是
/home/localuser
terdon
但是,无论我以或 的身份登录,我都需要对我的文件拥有完全访问权限localuser
,而我们的系统管理员实现此目的的方式是为两者提供localuser
相同terdon
的 UID。这样,无论我当前以哪个用户身份登录,我都可以自由操作我的本地文件。
答案2
答案是 Linux 并不能保护您自己。
如果您确实想要su root
并进入 /etc 文件并为所有用户提供相同的 UID,您可以这样做。它只是一个文本文件。
但你真的不应该这样做,否则会产生意想不到的后果。
答案3
实际上,两个用户拥有相同的 ID 是很常见的。在 FreeBSD 上,通常有两个 UID 为 0 的用户:root 和 toor。root 使用内置的 /bin/sh shell,而 toor 使用不同的 shell,通常是 bash。
答案4
两个用户可以拥有相同的 UID,因为它只是文本文件中的数字,因此您可以将其设置为任何您想要的值,包括已经使用的值。但正如您所见,这样做并不是一个好主意。