跟阿铭学 Linux
李世明
前腾讯高级运维工程师
522 人已学习
立即订阅
跟阿铭学 Linux
15
15
1.0x
00:00/00:00
登录|注册

第 5 章 Linux系统用户与用户组管理

关于这部分内容,阿铭在 Linux 系统日常管理工作中用得并不多,可这不代表这部分内容不重要。毕竟 Linux 系统是一个多用户系统,每个账号用来干什么,我们必须了如指掌,因为这涉及安全问题。
安装完系统后,如果我们一直使用 root 账号来操作,其实并不安全。因为 root 账号权限太高,容易误操作。阿铭建议你以后在工作中尽量避免直接使用 root 账号登录系统,使用普通用户就可以完成大部分工作。

5.1 认识 /etc/passwd 和 /etc/shadow

这两个文件可以说是 Linux 系统中最重要的文件之一。如果没有这两个文件或者这两个文件出了问题,则无法正常登录系统。下面咱们先来看看 /etc/passwd 文件,示例命令如下:
# cat /etc/passwd | head
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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
看到上面那条命令,你是不是有点不知所以呢?其实,head前面的符号|,我们称之为管道符,它的作用是把前面命令的输出结果再输入给后面的命令。管道符在第 10 章中还会介绍,阿铭用得也蛮多的,请掌握它的用法。

5.1.1 解说 /etc/passwd

/etc/passwd 可以分割成 7 个字段,每个字段的具体含义如下所示。
第 1 个字段为用户名(如第 1 行中的 root 就是用户名),是代表用户账号的字符串。用户名中的字符可以是大小写字母、数字、减号(不能出现在首位)、点或下划线,其他字符不合法。虽然用户名中可以出现点,但不建议使用,尤其是首位。另外,减号也不建议使用,这样容易造成混淆。
第 2 个字段存放的是该账号的口令。这里为什么是x呢?早期的 Unix 系统口令确实存放在这里,但基于安全因素,后来就将其存放到 /etc/shadow 中了,这里只用一个x代替。
第 3 个字段为一个数字,这个数字代表用户标识号,也称为 uid。系统就是通过这个数字识别用户身份的。这里的 0 就是 root,也就是说我们可以修改 test 用户的 uid 为 0,那么系统会认为 root 和 test 为同一个账户。uid 的取值范围是 0~65 535(但实际上已经可以支持到 4 294 967 294)。0 是超级用户(root)的标识号,CentOS 7 和 CentOS 8 的普通用户标识号从 1000 开始。如果我们自定义建立一个普通用户,那么会看到该账户的标识号是大于或等于 1000 的。
第 4 个字段也是数字,表示组标识号,也称为 gid。这个字段对应着 /etc/group 中的一条记录,其实 /etc/group 和 /etc/passwd 基本类似。
第 5 个字段为注释说明,没有实际意义。通常记录该用户的一些属性,例如姓名、电话、地址等。我们可以使用chfn命令来更改这些信息。
第 6 个字段为用户的家目录,当用户登录时,就处在这个目录下。root 的家目录是 /root,普通用户的家目录则为 /home/username,用户家目录是可以自定义的。比如,建立一个普通用户 test1,要想让 test1 的家目录在 /data 目录下,只要将 /etc/passwd 文件中对应该用户那行中的本字段修改为/data即可。
最后一个字段为用户的 shell。用户登录后,要启动一个进程,用来将用户下达的指令传给内核,这就是 shell。Linux 的 shell 有 sh、csh、ksh、tcsh、bash 等多种,而 Red Hat、CentOS 的 shell 就是 bash。查看 /etc/passwd 文件,该字段中除了 /bin/bash,还有很多 /sbin/nologin,这表示不允许该账号登录。如果想建立一个不允许登录的账号,可以把该字段改成 /sbin/nologin,默认是 /bin/bash。

5.1.2 解说 /etc/shadow

/etc/shadow 和 /etc/passwd 类似,由:分割成 9 个字段,示例命令如下:
# cat /etc/shadow |head -n 3
root:$6$Wu/W4eryssf9B3xQ$jgNuM24oQ9boSTUPaeJ/79GFjLUX912bSDu3ak40qJIxNj4/SpaK.JXguDYowM00mt3/
5tvNIoBJ7RNcpH2K.1:18257:0:99999:7:::
bin:*:18078:0:99999:7:::
daemon:*:18078:0:99999:7:::
每个字段的含义如下所示。
第 1 个字段为用户名,与 /etc/passwd 对应。
第 2 个字段为用户密码,是该账号的真正密码。虽然这个密码已经加密,但是有些黑客还是能够解密的。所以将该文件属性设置为000,但 root 账户还是可以访问或更改的。使用命令ls -l查看该文件的权限,示例命令如下:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了Linux系统用户与用户组管理的重要性以及相关操作。首先强调了避免直接使用root账号登录系统的安全性,并介绍了/etc/passwd和/etc/shadow两个重要文件的含义和字段解释。文章还详细介绍了如何使用groupadd命令创建新组,以及如何使用groupdel命令删除组。此外,还介绍了如何使用useradd命令增加用户以及使用userdel命令删除用户。另外,还介绍了密码管理和用户身份切换的相关命令。文章还介绍了sudo命令的作用以及如何配置sudo权限,以及不允许root远程登录Linux的方法。总的来说,本文内容详实,涵盖了Linux系统用户与用户组管理的基本知识和操作方法,对于Linux系统管理员和初学者都具有一定的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《跟阿铭学 Linux》
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
大纲
固定大纲
5.1 认识 /etc/passwd 和 /etc/shadow
5.1.1 解说 /etc/passwd
5.1.2 解说 /etc/shadow
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部