用户和用户组-UID和GID

Linux用户和用户组

Linux采用一个32位的整数记录和区分不同的用户。这个区分不同用户的数字被称为User ID,简称UID。Linux系统中用户分为3类,即普通用户、根用户root、系统用户。

用户UID

  • 普通用户是指所有使用Linux系统的真实用户,通常UID>500;
  • 根用户即root用户,ID为0。
  • 系统用户是指系统运行必须有的用户,但并不是真实使用者。UID为1~499。
    对于系统用户,可能还不能理解是什么。比如,在Redhat或CentOS下运行网站服务时,需要使用系统用户Apache来运行httpd,而运行MySQL数据库服务时,需要使用系统用户mysql来运行mysqld进程。这就是系统用户。

要确认自己的UID,可以使用id命令

1、查看自己的UID

[root@study ~]# id

2、可以查看系统里面有没有一个名为 dmtsai 的用户?

[root@study ~]# id dmtsai
uid=1000(dmtsai) gid=1000(dmtsai) groups=1000(dmtsai),10(wheel)

用户组GID

在Linux系统中,有用户也有用户组。不同用户组也是用数字来区分,这种用于区分不同用户组的ID被称为Group ID,也就是GID。

要确认自己所属的用户组,可以使用groups命令

[root@study ~]# groups

前面提到了,在登录Linux系统时必须要输入用户名和密码。而系统用来记录用户名、密码的最重要两个文件是/etc/passwd和/etc/shadow。下面来看看这两个文件结构

/etc/passwd 文件结构

[root@study ~]# head -n 4 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

可以看到,虽然每行的内容不一样,但格式却是一致的,即每行都是使用6个分隔号“:”隔开的7列字符串。每一列所代表的含义如表2-1所示。
/etc/passwd内容格式

从表中可以了解到,/etc/passwd的第二列最早是在UNIX系统中用于记录密码的,但是这其中存在一个问题:由于每个用户都需要有读取这个文件的权限,而随着现代密码破解技术的发展,即便是加密的密码,也有被破解的可能,所以将密码从这个文件中剥离出去是非常必要的。

/etc/shadow 文件结构

目前Linux的做法是,将密码相关的信息保存到/etc/shadow中,而且默认只有root用户才有读的权限,其他人完全没有读取这个文件的可能。这种密码保存方式被称为“影子密码”。看一下/etc/shadow中的第一行内容:

[root@study ~]# head -n 4 /etc/shadow
root:$6$wtbCCce/PxMeE5wm$KE2IfSJr.YLP7Rcai6oa/T7KFhO...:16559:0:99999:7::: <==下面说明用 bin:*:16372:0:99999:7::: daemon:*:16372:0:99999:7::: adm:*:16372:0:99999:7:::

与/etc/passwd类似,/etc/shadow也是由冒号“:”隔开的,不同的是这里是8个冒号隔开的9列。每一列代表的含义如表2-2所示。
表 /etc/shadow内容格式说明
/etc/shadow内容格式述

《Linux系统命令及Shell脚本实践指南》pdf
《鸟哥Linux私房菜-基础版》pdf
学无止境

猜你喜欢

转载自blog.csdn.net/weixin_41948075/article/details/123822903