虽然我们登录Linux主机的时候,输入的是我们的账号,但是其实Linux主机并不会直接认识你的“账号名称”的,它仅认识ID。ID与账号的对应关系在/etc/passwd当中。

每个登录的用户至少都会取得两个ID,一个是用户ID(UserID,简称UID),一个是用户组ID(Group ID,简称GID)。

文件如何判别它的所有者与用户组呢?其实就是利用UID与GID。每一个文件都会有所谓的所有者ID与用户组ID,当我们有要显示文件属性的需求时,系统会根据/etc/passwd与/etc/group的内容,找到UID/GID对应的账号与组名再显示出来。

1. 先查看一下,系统里面有没有一个名为yhk的用户

用户的字段正是yhk本身。

2. 修改一下,将yhk的1000UID该为2000

怎么变成1000了?因为文件只会记录数字而已。因为我们乱改,所以导致1000找不到对应的账号,因此显示数字!

3. 将刚才的UID改回来。

你输入账号密码后,系统怎么处理?

1. 先找寻/etc/passwd 里面是否有你输入的账号,如果没有则跳出,如果有的话则将该账号对应的UID与GID(在/etc/group 中)读出来,另外,该账号的主文件夹与shell 设置也一并读出。

2. 再来则是核对密码表。Linux会进入/etc/shadow 里面找出对应的账号与UID,然后核对一下你刚才输入的密码与里面的密码是否相符。

3. 如果一切ok的话,就进入shell 控管的阶段了。

跟用户账号有关的有两个非常重要的文件,一个是管理用户UID/GID重要参数的/etc/passwd ,一个则是专门管理密码相关数据的/etc/shadow

/etc/passwd 文件结构

每一行都代表一个账号,有几行就代表有几个账号在你的系统中。不过需要特别留意的是,里面有很多账号本来就是系统正常运行所必须要的,我们可以简称它为系统账号,例如bin, daemon, adm, nobody 等,这些账号请不要随意删掉。

每一行使用“:”分隔开,共有七个字段,分别是:

1. 账号名称

就是账号,用来对应UID 的。例如root 的UID对应就是0(第三字段)

2. 密码

早期UNIX系统的密码就是放在这字段上。但是因为这个文件的特性是所有的程序都能够读取,这样一来很容易造成密码数据被窃取,因此后来就将这个字段的密码数据改放到/etc/shadow 中了,所以这里你会看到一个“x”.

3. UID

这个就是用户标识符。通常Linux对于UID有几个限制。0(系统管理员),1~499(系统账号),500~65535(可登陆账号)

4. GID

这个与/etc/group 有关。其实/etc/group 与 /etc/passwd 差不多,只是它是用来规定组名与GID的对应而已。

5. 用户信息说明列

这个字段基本上并没有什么重要用途,只是用来解释这个账号的意义而已。

6. 主文件夹

这是用户的主文件夹。

7. shell

当用户登录系统后就会取得一个Shell来与系统的内核通信以进行用户的操作任务。那为何默认shell会使用bash呢?就是这个字段指定的。

/etc/shadow 文件结构

我们知道很多程序的运行都与权限有关,而权限与UID/GID 有关。因此各程序当然需要读取/etc/passwd 来了解不同账号的权限。因此/etc/passwd 的权限需要设置为-rw-r--r--这样的情况。后来发展出将密码移动到/etc/shadow 这个文件分隔开来的技术,而且还加入很多的密码限制参数在/etc/shaow 里面。

共有9个字段:

1. 账号名称

由于密码也需要与账号对应。因此,这个文件的第一列就是账号,必须要与/etc/passwd 相同才行。

2. 密码

这个字段内的数据才是真正的密码,而且是经过编码的密码(加密)。这个文件的默认权限是“-rw-------”或者是“-r--------”,即只有root才可以读写。你得随时注意,不要不小心改动了这个文件的权限。

/etc/group 文件结构

这个文件就是记录GID与组名的对应。

这个文件每一行代表一个用户组。共分4列

1. 用户组名称

2. 用户组密码

通常不需要设置,这个设置通常是给“用户组管理员”使用的,目前很少有这个机会设置用户组管理员。

3. GID

就是用户组ID。我们/etc/passwd 第四个字段使用的GID对应的用户组名就是由这里对应出来的。

4. 此用户组支持的账号名称

我们知道一个账号可以加入多个用户组,那某个账号想要加入此用户组时,将该账号填入这个字段即可。举例来说,如果我想让 dmtsai 也加入 root 这个用户组,那么在第一行的最后面加上“,dmtsai”,注意不要有空格,使其成为“root:x:0:root,dmstai”就可以了。

有效用户组(effective group)与初始用户组(initial group)

每个用户在它的/etc/passwd 里面的第四列GID就是所谓的“初始用户组”。也就是说,当用户登录系统,立刻就拥有这个用户组的相关权限。

新文件的组要检查一下当时的有效用户组了。

用户账号-用户标识符:UID与GID相关推荐

  1. Linux用户标识符UID与GID和用户账号

    1.用户标识符UID和GID UID        表示的是用户的标识(User Identification) GID        表示的是用户组的标识(Group Identification) ...

  2. 修改Linux用户的UID、GID

    对于NFS共享文件,保留文件权限,需要UID.GID与nfs-server端一致! 试验环境:Centos6.5_64/172.24.0.26 01.用户的UID和GID不能被占用 [root@26 ...

  3. linux 命令修改uid,修改Linux用户的UID、GID

    修改Linux用户的UID.GID 对于NFS共享文件,保留文件权限,需要UID.GID与nfs-server端一致! 试验环境:Centos6.5_64/172.24.0.26 01.用户的UID和 ...

  4. 1进程 ppid_进程pid和ppid、进程的uid和euid、用户的uid和gid、文件的创建者和所有者的关系辨析...

    进程pid和ppid.进程的uid和euid.用户的uid和gid.文件的创建者和所有者的关系辨析 1.当我们创建用户时,由我们为新建用户命名和设置密码,同时系统会为我们所创建的用户名关联一个号,就是 ...

  5. 修改linux进程gid,修改Linux用户的UID、GID

    对于NFS共享文件,保留文件权限,需要UID.GID与nfs-server端一致! 试验环境:Centos6.5_64/172.24.0.26 01.用户的UID和GID不能被占用 [root@26 ...

  6. Linux系统下如果查看用户的UID和GID

    方法一:使用 id 命令 使用 id 命令可以很轻松的通过用户名查看UID.GID,下面来讲解一下这个命令的用法. 命令格式 id [选项]... [用户名] 命令选项 -a 忽略,兼容其它版本 -Z ...

  7. Linux命令-查看用户的UID和GID

    By:Ailson Jack Date:2016.03.27 个人博客:www.only2fire.com 本文在我博客的地址是:www.only2fire.com/archives/57.html, ...

  8. linux 查看用户的uid和gid

    1.可以通过查看/etc/passwd文件来确定自己的uid和gid cat /etc/passwd | grep 你的用户名 例子: aaa@aaa:~/桌面$ cat /etc/passwd |g ...

  9. 账号 linux_Linux入门之UID和GID(用户ID和组ID)

    登陆 Linux 系统时,虽然输入的是自己的用户名和密码,但其实 Linux 并不认识你的用户名称,它只认识用户名对应的 ID 号(也就是一串数字).Linux 系统将所有用户的名称与 ID 的对应关 ...

最新文章

  1. python培训好学吗-Python0基础好学吗?
  2. 基于 OSGi 的面向服务的组件编程
  3. 破译。字符串匹配。HOJ1548 Crypt Kicker II。
  4. Android permission 访问权限一览
  5. opencv-python单目视觉标定,简单易用。
  6. 13 个应该记住的最不寻常的搜索引擎
  7. Bash教程之模式扩展
  8. Redis系列-主从复制配置
  9. http 几种请求方法的差别
  10. antd 日期时间选择_【UI设计】日期选择器的常见样式总结
  11. AR/VR learning (2)--unity3D在android 上的手势识别与检测
  12. JVM监控及诊断工具GUI篇之Arthas(五):其他指令
  13. 麦子学院与阿里云战略合作 在线教育领军者技术实力被认可
  14. matlab中转置矩阵的特征值,矩阵乘以矩阵的转置运算的解析
  15. STM32开发环境安装
  16. c++实现n阶行列式计算
  17. 杭州电商java招聘_2021年IUU旅行 JAVA开发工程师J11179招聘-IUU旅行 JAVA开发工程师J11179招聘求职信息-拉勾招聘...
  18. 找出直系亲属-cpp
  19. 工业自动化控制-组态王2
  20. 【操作系统习题】假定某多道程序设计系统供用户使用的主存空间为100 KB ,磁带机2台,打印机1台

热门文章

  1. 【JavaSe】面向对象篇(五) 三大特征之二继承
  2. Linux命令-df命令
  3. Linux网络-网络配置命令
  4. Gitlab和Github区别
  5. Python内置函数——最值与求和
  6. 【通信协议】单总线协议详解——以DHT11为例
  7. BeautifulSoup用法详解
  8. WebService(腾讯QQ在线状态 WEB 服务)
  9. springcloud-微服务
  10. MySQL:使用PMM进行性能监控