【系统工程】linux多个用户可用同一个UID吗

思考:多个用户可以使用同一个UID吗?

说到这个议题,相信很多初学甚至些许老手了,都在思考的问题;

参考:linux系统命令①-用户管理

我们知道,我们可以通过修改用户的uid为“0”,从而使其成为超级管理用户;

那么其他用户呢,是不是也可以修改其UID,从而是多个用户共用同一个UID呢?

我们知道,UID作为计算机识别用户的标识,就像身份证每个都是唯一的,但是姓名确实可以重复的;

但是在linux系统中用户名是唯一的,uid是唯一的却是可供给多个用户共用的;我们先来看一下下面的几个命令:

[root@Moni ~]# useradd oxblog1
[root@Moni ~]# useradd oxblog2

!--可以看到我创建了两个用户--!

[root@Moni ~]# tail -n 2 /etc/passwd
oxblog1:x:501:501::/home/oxblog1:/bin/bash
oxblot2:x:502:502::/home/oxblog2:/bin/bash

!--两个用户的uid分别是501和502,gid也是501和502--!

[root@Moni ~]# tail -n 2 /etc/group
oxblog1:x:501:
oxblog2:x:502:

!--创建用户时,默认自动创建与之用户对应的用户组--!

[root@Moni ~]# usermod -u 501 oxblog2
usermod: UID '501' already exists

!--看我像通过命令直接修改用户oxblog的组id为501,显然是不行的--!

[root@Moni ~]# useradd oxblog2
useradd: user 'oxblog2' already exists

!--我又执行了一次创建oxblog,显然用户名也是唯一的--!

[root@Moni ~]# id oxblog2
uid=502(oxblog2) gid=502(oxblog2) 组=502(oxblog2)
[root@Moni ~]# sed -i '$coxblog2:x:501:502::/home/oxblog2:/bin/bash' /etc/passwd
[root@Moni ~]# id oxblog2
uid=501(oxblog1) gid=502(oxblog2) 组=501(oxblog1)

!--看到没有,我通过/etc/passwod文件修改了用户oxblog2的uid,但你会发现--!
虽然oxblog2的uid修改为了501,但是括弧里面却显示了oxblog1,而其用户对应的gid依然是502(oxblog2)因为我们并没有修改gid,但是后面的组已经是501oxblog1了;我们在继续看!

[root@Moni ~]# su - oxblog1
[oxblog1@Moni ~]$ exit
logout
[root@Moni ~]# su - oxblog2
su: 警告:无法切换到目录/home/oxblog2: 权限不够
-bash: /home/oxblog2/.bash_profile: 权限不够
-bash-4.1$

!--我们切换oxblog1用户正常的,但是当我们切换到oxblog2用户却报错了,这是因为我们没有足够的权限访问宿主目录--!

[root@Moni ~]# ls -ld /home/oxblog2
drwx------ 4 502 oxblog2 4096 5月  23 19:37 /home/oxblog2
[root@Moni ~]# chown -R oxblog2 /home/oxblog2
[root@Moni ~]# su - oxblog2
[oxblog1@Moni ~]$

!--是的,很显然这里用户系统依然识别到的是uid502,然后我们重新修改属主,便可以正常切换用户咯--!

因此我们可以得出结论:

linux系统uid是唯一的但可以供多个用户使用,gid其实同理也是可以的

我们无法通过命令来创建已存在的用户名,无法通过命令修改用户uid为已被关联到其他用户的uid

我们通过修改password文件修改uid,但是其用户之前被赋予的目录文件权限其实并没有修改,这里是说除了宿主目录,也包括其他曾经赋予了权限的目录;

最终,如果用户已经使用许久,擅自修改uid,会造成文档目录权限混乱哦!

当然如果修改的uid是没有使用的,自然是没有问题的!

那么问题又来了,既然普通用户,会有这样的问题,那么root用户的uid“0”,和系统用户呢?

如果根用户和系统用户也是这样,那岂不是没人敢这么做了?

事实上,linux的超级用户uid“0”是特殊的存在,并不受限制,而系统用户和普通用户是一样的哦!

[root@Moni ~]# sed -i '$coxblog2:x:0:0::/home/oxblog2:/bin/bash' /etc/passwd
[root@Moni ~]# ls -ld /home/oxblog2
drwx------ 4 501 oxblog2 4096 5月  23 19:46 /home/oxblog2
[root@Moni ~]# su - oxblog2
[root@Moni ~]#exit
[root@Moni ~]# sed -i '$coxblog2:x:502:502::/home/oxblog2:/bin/bash' /etc/passwd
[root@Moni ~]# ls -ld /home/oxblog2
drwx------ 4 oxblog2 oxblog2 4096 5月  23 19:57 /home/oxblog2

到这里,你知道这其中的叉叉道道了吧,当然没事就别折腾了! /色

(今天就到这里了,有疑问的地方欢迎大家留言哦。)

看了本篇文章的还道友还要看:linux系统命令和shell

Edit@bigmouth【原创博文】®【系统工程】


原创文章,转载请注明:转自于公牛博客

本文链接地址:【系统工程】linux多个用户可用同一个UID吗

11
祝福我们的祖国繁荣昌盛
  • 请尽情挥洒您的笔墨!