0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux系统用户与用户组管理

阿铭linux 来源:阿铭linux 作者:阿铭linux 2022-10-20 09:19 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

关于这部分内容,阿铭在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前面的符号|,我们称为管道符,它的作用是把前面的命令的输出再输入给后面的命令。管道符在第11章中还会介绍,阿铭用得也是蛮多的,请掌握它的用法。

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~655 35(但实际上已经可以支持到429 496 729 4),0是超级用户(root)的标识号,Rocky 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等多种,而RHEL/Rocky的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.107:::
bin1807899999::
daemon1807899999::

每个字段的含义如下所示:

  • 1个字段为用户名,与/etc/passwd对应。

  • 2个字段为用户密码,是该账号的真正密码。这个密码已经加密,但是有些黑客还是能够解密的。所以,将该文件属性设置为000,但root账户是可以访问或更改的。使用命令ls -l查看该文件的权限,示例命令如下:

    # ls -l /etc/shadow
    ---------- 1 root 689 12月 30
    07:46 /etc/shadow
  • 3个字段为上次更改密码的日期,这个数字以197011日和上次更改密码的日期为基准计算而来。例如,上次更改密码的日期为202011日,则这个值就是365* (2020-1970)+(2020-1970)/4+1=18263。如果是闰年,则有366天。

  • 4个字段为要过多少天才可以更改密码,默认是0,即不受限制。

  • 5个字段为密码多少天后到期,即在多少天内必须更改密码。例如,这里设置成30,则30天内必须更改一次密码;否则,将不能登录系统。默认是99999,可以理解为永远不需要改。

  • 6个字段为密码到期前的警告期限。若这个值设置成7,则表示当7天后密码过期时,系统就发出警告,提醒用户他的密码将在7天后到期。

  • 7个字段为账号失效期限。如果这个值设置为3,则表示密码已经到期,然而用户并没有在到期前修改密码,那么再过3天,这个账号便失效,即锁定。

  • 8个字段为账号的生命周期。跟第3个字段一样,这个周期是按距离197011日多少天算的。它表示的含义是,账号在这个日期前可以使用,到期后账号将作废。

  • 最后一个字段作为保留用的,没有什么意义。

上面关于密码文件字段的介绍内容偏多并不太容易记住,在这里阿铭提醒你,这部分内容无需记住,只需要了解即可,因为在工作中我们几乎用不到这些知识点。

5.2用户和用户组管理

上面介绍了/etc/passwd/etc/shadow这两个文件的具体含义,但这只是理论知识,实际上,对于在Linux下用户和组如何创建、删除以及更改其属性,我们一无所知。

5.2.1新增组的命令groupadd

命令groupadd的格式为 groupadd [-g GID] groupname,示例命令如下:

# groupadd grptest1
# tail -n1 /etc/group
grptest11002:

如果不加-g选项,则按照系统默认的gid创建组。跟uid一样,gid也是从1000开始的。我们也可以按如下操作自定义gid

# groupadd -g 1008 grptest2
# tail -n2 /etc/group
grptest11002:
grptest21008:

5.2.2删除组的命令groupdel

有时,我们会有删除组的需求,此时可进行如下操作:

# groupdel grptest2
# tail -n2 /etc/group
slocate21:
grptest11002:

命令groupdel没有特殊选项,但有一种情况不能删除组,如下所示:

# groupdel user1
groupdel:不能移除用户“user1”的主组

上例中,user1组中包含user1账户,只有删除user1账户后才可以删除该组。

5.2.3增加用户的命令useradd

从字面意思上来看,useradd就是增加用户,该命令的格式为useradd [-u UID] [-g GID] [-d HOME] [-M] [-s],其中各个选项的具体含义如下。

  • -u:表示自定义UID

  • -g:表示使新增用户属于已经存在的某个组,后面可以跟组id,也可以跟组名。

  • -d:表示自定义用户的家目录。

  • -M:表示不建立家目录。

  • -s:表示自定义shell

下面我们先来新建一个用户test10,示例命令如下:

# useradd test10
# tail -n1 /etc/passwd
test10:x:1001:1001::/home/test10:/bin/bash
# tail -n1 /etc/group
test10:x:1001:

如果useradd不加任何选项,直接跟用户名,则会创建一个跟用户名同名的组。当然,很多时候需要我们自己去定义uidgid或者所属的组,示例命令如下:

# useradd -u1005 -g 1006 -M -s /sbin/nologin user11
useradd:“1006”组不存在
# useradd -u1005 -g 1001 -M -s /sbin/nologin user11
# useradd -u1006 -g grptest1 user12
# tail -n2 /etc/passwd
user11:x:1005:1001::/home/user11:/sbin/nologin
user12:x:1006:1002::/home/user12:/bin/bash
# tail -n2 /etc/group
user1:x:1003:
test10:x:1001:

如果-g选项后面跟一个不存在的gid,则会报错,提示该组不存在。刚刚上面说过,加上-M选项后,则不建立用户家目录,但在/etc/passwd文件中仍然有这个字段。如果你使用命令ls /home/user11查看一下,会提示该目录不存在。所以,-M选项的作用只是不创建那个目录。下面我们来查看user11的家目录,会提示我们目录不存在,示例命令如下:

# ls /home/user11
ls: 无法访问/home/user11: 没有那个文件或目录

5.2.4删除账户的命令userdel

命令userdel的格式为userdel [-r] username,其中-r选项的作用是,当删除用户时,一并删除该用户的家目录。下面我们先来看看user12的家目录,示例命令如下:

# ls -ld /home/user12
drwx------ 2 user12 grptest1 62 1月   2 06:47  /home/user12

如果不加-r选项,则会直接删除用户user12,但保留其家目录,如下所示:

# userdel user12
# ls -ld /home/user12
drwx------ 2 user12 grptest1 62 1月   2 06:47  /home/user12

此时user12的家目录还在,那么我们再加上-r选项删除user1用户,如下所示:

# ls -ld /home/user1
drwx------ 2 user1 test10 62 12月 30
07:46  /home/user1
# userdel -r user1
# ls -ld /home/usre1
ls: 无法访问/home/user1: 没有那个文件或目录

此时user1的家目录已经不复存在。


审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11627

    浏览量

    217895
  • 命令
    +关注

    关注

    5

    文章

    746

    浏览量

    23441

原文标题:第6章 Linux系统用户与用户组管理(上)

文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    技术文章 | Ubuntu权限管理攻略

    将从基础原理到实战操作,全面解析Ubuntu权限管理的核心知识。一、权限管理三角:用户与权限Ubuntu采用多用户多任务的操作
    的头像 发表于 08-14 12:02 655次阅读
    技术文章 | Ubuntu权限<b class='flag-5'>管理</b>攻略

    Centos7分用户记录历史命令至日志文件教程

    在企业级Linux运维中,实时记录用户操作历史是审计排查的关键步骤。本文华纳云针对CentOS7系统,提供三种高效方案实现分用户日志记录+防篡改管理
    的头像 发表于 06-28 14:50 594次阅读

    Linux系统管理的核心概念

    在前一篇文章中,我们深入探讨了Linux中的文件操作命令,如cp、mv、rm,以及文本处理命令grep、wc和管道符。本文将继续深入Linux系统管理的核心概念,包括root用户的角色
    的头像 发表于 05-15 17:05 489次阅读

    Linux权限管理基础入门

    Linux的广阔天空中,权限管理犹如一只翱翔的雄鹰,掌控着系统的安全与秩序。掌握Linux权限,不仅能让你的系统管理更加得心应手,还能有效
    的头像 发表于 05-06 13:44 543次阅读
    <b class='flag-5'>Linux</b>权限<b class='flag-5'>管理</b>基础入门

    Linux系统用户权限详解

    Linux 是一种开源的、基于 Unix 的操作系统,它因其灵活性、稳定性和高性能而广泛应用于服务器、嵌入式系统、超级计算机、桌面计算等领域。
    的头像 发表于 04-25 10:56 720次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>系统</b><b class='flag-5'>用户</b>权限详解

    Linux系统进程管理入门指南

    Linux 系统中,进程是正在运行的程序的实例。理解进程的管理、查看和控制对于系统管理员和开发者来说非常重要
    的头像 发表于 04-22 14:34 852次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>系统</b>进程<b class='flag-5'>管理</b>入门指南

    浅谈用户侧储能电站能量管理系统的设计

    【摘要】: 在分析储能电站电气结构和通信架构的基础上,根据需求设计了一种用户侧储能电站能量管理系统。介绍了这一系统的软件架构、应用功能模块、服务功能模块和通用功能模块,并论述了削峰填谷
    的头像 发表于 03-18 14:15 865次阅读
    浅谈<b class='flag-5'>用户</b>侧储能电站能量<b class='flag-5'>管理</b><b class='flag-5'>系统</b>的设计

    OLT下挂IPTV部分用户组播切换成单播如何解决

    某地新开通的OLT(ZXA10 C600)上线割接后,下挂IPTV用户业务正常,但部分用户由原来的播切换成单播。 ZXA10 C600 组网图如下: 从以下几个方面对播业务的故障原
    的头像 发表于 01-09 09:32 1757次阅读
    OLT下挂IPTV部分<b class='flag-5'>用户组</b>播切换成单播如何解决

    电能管理系统-用户端智能化用电管理安全、可靠

    用电管理终端等设备用电管理解决方案,实现电网与用户的双向良性互动。用户端急需解决的研究内容主要包括:先进的表计,智能楼宇、智能电器、增值服务、客户用电
    的头像 发表于 01-07 11:04 1112次阅读
    电能<b class='flag-5'>管理</b><b class='flag-5'>系统</b>-<b class='flag-5'>用户</b>端智能化用电<b class='flag-5'>管理</b>安全、可靠

    禁止使用root用户通过ssh远程登录Linux

    1、背景描述 出于安全考虑,需要禁止使用root用户通过ssh远程登录Linux 禁用root用户远程登录后,需要提供一个权限用户用于ssh远程登录 2、创建拥有sudo权限的
    的头像 发表于 12-21 16:25 2504次阅读
    禁止使用root<b class='flag-5'>用户</b>通过ssh远程登录<b class='flag-5'>Linux</b>

    Linux中的用户与创建

    Linux中的用户与创建 用户的类型 超级管理用户: 权限最高的用户(uid:0) #uid:是
    的头像 发表于 12-20 14:24 1181次阅读
    <b class='flag-5'>Linux</b>中的<b class='flag-5'>用户</b>与创建

    高手Linux运维管理必备工具大全

    一、统一账号管理 1.LDAP 统一管理各种平台帐号和密码,包括但不限于各种操作系统(Windows、Linux),Linux
    的头像 发表于 12-18 10:03 946次阅读

    Linux系统设置用户密码规则(复杂密码策略)方法

    Linux系统下的用户密码的有效期 可以修改密码可以通过login.defs文件控制。设置密码过期期限(默认情况下,用户的密码永不过期。) 编辑 /etc/login.defs 文件,
    的头像 发表于 12-07 09:24 2188次阅读

    deepin社区携手共话开源新生代成长之路

    此前,2024年11月30日下午,由 deepin(深度)社区联合华中科技大学开放原子开源俱乐部、 RustSBI 开源社区和清华大学开源操作系统训练营共同举办的WHLUG(武汉Linux用户组)线下沙龙在华中科技大学成功举办。
    的头像 发表于 12-05 14:28 989次阅读