Linux操作系统:基础篇6基本功能之用户管理

简介: 在Linux系统中,由于角色不同,权限和所完成的任务也不同;用户的角色是通过UID识别的;在系统管理中,系统管理员一定要坚守UID唯一的特性;

一、Linux中的用户/组概述

 在Linux系统中,由于角色不同,权限和所完成的任务也不同;用户的角色是通过UID识别的;在系统管理中,系统管理员一定要坚守UID唯一的特性;

 Linux下的用户可以分为三类:超级用户、系统用户和普通用户。

 超级用户:用户名为root,具有一切权限,只有进行系统维护(例如建立用户等)或其他必要情形下才用超级用户登录,以避免系统出现安全问题。

 系统用户:Linux系统正常工作所必需的内建的用户,主要是为了满足相应的系统进程对文件属主的要求而建立的,系统用户不能登录,如bin、daemon、adm、lp等用户,系统用户也称为虚拟用户。

 普通用户:为了让使用者能够使用Linux系统资源而建立的,我们的大多数用户属于此类。

 用户(user)的概念:

Linux是真正意义上的多用户操作系统,所以我们能在Linux系统中建立若干用户。

 用户组(group)的概念:

 用户组(group)就算具有相同特征的用户(user)的集合体;

 用户和用户组的对应关系是:一对一、多对一、一对多或多对多。

 一对一:某个用户可以是某个组的唯一成员;

 多对一:多个用户可以是某个唯一的组的成员,不归属其它用户组;

 一对多:某个用户可以是多个用户组的成员;

 多对多:多个用户对应多个用户组,并且几个用户可以是归属相同的组;

二、用户和用户组相关配置文件

 在 Linux中,用户账号、密码、用户组信息和用户组密码均是存放在不同的配置文件中的。

 在 Linux系统中,用户账号及其相关信息(密码除外)均是存放在一个名叫 passwd的配置文件中的,该文件位于/etc目录。用户密码保存在 shadow配置文件中。

 Linux的配置文件均是文本文件,因此可使用文本文件内容查看命令来查看。在 passwd文件中,一行定义一个用户账号,每行均由多个不同的字段构成,各字段值间用“:”分隔,每个字段均代表该账户某方面的信息。

(1)/etc/passwd 用户账号文件

 第一行是root用户信息,紧接着为系统用户的信息,普通用户的信息位于文件的尾部。passwd文件中每一行由7个字段的数据组成,字段之间用“:”分割,格式如下:

 账号名称:密码:UID:GID:用户的全名或其他描述:主目录:登录Shell

说明如下:

 账号名称:用户登录Linux系统时使用的名称。

 密码:这里的密码是经过加密后的密码,而不是真正的密码,若为“x”,说明密码已经被移动到shadow这个加密过后的文件。

 UID:用户的标识,是一个数值,Linux系统内部使用它来区分不同的用户。

 GID:用户所在组的标识,是一个数值,Linux系统内部使用它来区分不同的组,相同的组具有相同的GID。

 用户的全名或其他描述:可以记录用户的个人信息,如姓名、电话等信息。

 主目录:对于root的主目录在/root,对于普通用户通常是/home/username,username是用户名。

 登录Shell:定义用户登录后使用的Shell版本,默认是bash。

(2)/etc/shadow:用户密码文件

 为每个用户提供一条记录,shadow文件中的每行由9个字段组成,格式如下:

 用户名:加密密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:保留字段。

 说明如下:

 最后一次修改时间:表示从1970年1月1日起到上次修改口令所经过的天数。

 最小时间间隔:表示两次修改口令之间至少经过的天数。

 最大时间间隔:表示口令还会有效的最大天数,如果是99999则表示永不过期。

 警告时间:表示口令失效前多少天内系统向用户发出警告。

 不活动时间:密码失效后距离账号被查封的天数。

 失效时间:账号被查封时间距离1970年1月1日的天数。

 保留字段:无意义,未使用。

 在shadow文件中,密码字段为“*”表示用户被禁止登录,为“!”表示用户被锁定。

(3)/etc/group:用户组账号文件

 用户组账户信息保存在 /etc/group配置文件中,任何用户均可以读取。用户组的真实密码保存在/etc/shadow配置文件中。

 在group文件中,第1个字段代表用户组的名称,第2列为x,第3列为用户组的ID号,第4列为该组中的用户成员列表,各用户名间用逗号分隔。

 格式:groupname:passwd:GID:userlist

 Linux中的用户组可以分为三类:用户私有组、系统默认组和普通用户组。

 用户私有组:是创建用户账号时默认生成的与用户登录名一样的用户组。

 系统默认组:(又称标准组)是安装时系统自动创建的用户组,用于向该组内的用户授予某些特定的访问权限。

 普通用户组:是系统管理员创建的组。

三、Linux中用户账号与密码管理

1、添加用户

 在Linux中创建或添加新用户,使用useradd命令来实现。语法为:

 useradd [参数] 用户名

 常用参数:

   -d<登入目录>:指定用户登入时的起始目录

    -m:自动建立用户的登入目录

    -g<群组>:指定用户所属的群组

    -r:建立系统帐号

    -u<用户号>:指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。

 增加用户命令的执行有三个过程:

 (1)在/etc/ passwd文件中写入该用户对应的记录项。

 (2)为新登录用户在”/home下建立一个主目录,用户登录后自动进入该目录。

 (3)在/ etc/group中为新用户增加一个入口项。该用户属于哪一个用户组,就把用户名加到该组对应的用户列表中。

 示例:

(1)添加test1用户:
    #useradd test1
  (2)为添加的用户指定相应的用户组:
     #useradd -g root test
  (3)为新添加的用户指定home目录
     #useradd -d /home/test test
t

2、设置用户属性

 对于已创建好的账户,可使用 usermod命令来修改和设置账户的各项属性,包括登录名、主目录、用户组、登录 shell等,该命令的用法为:

   usermod [参数] 用户名

  常用参数:

   -d登入目录>:修改用户登入时的目录。

    -g<群组>:修改用户所属的群组。

    -l<帐号名称>:修改用户帐号名称。

    -u:修改用户ID。

 示例:

(1)改变用户账号名和主目录

  将用户test更名为newtest,操作命令如下:

#usermod –l newtest test

    查看用户信息:

#tail –l /etc/passwd
  newtest:x:503:503::/home/test:/bin/bash

  更改用户主目录:

#usermod –d /home/newtest newtest

(2)锁定账户

 若要临时禁止用户登户,可采取将该用户账户锁定。锁定账户可利用-L参数来实现。

  锁定test账户,则操作命令为:

#usermod –L test

 Linux锁定账户,是通过在密码文件 shadow的密码字段前加“!”来标识该用户被锁定。

(3)解锁用户

 要解锁账户,可使用带-U参数的 usermod命令来实现。

  解锁test账户,则操作命令为:

#usermod –U test

3、删除账号

 要删除账户,可使用 userdel命令来实现,其用法为:

   userdel [-r][用户帐号]

 -r为可选项,若带上该参数,则在删除该账户的同时,一并删除该账户对应的主目录。比如,若要删除test账户,并同时删除其主目录,则操作命令为:

#userdel –r test

4、用户密码管理

 Linux的账户必须设置密码后,才能登录系统。设置账户登录密码,使用passwd命令,其用法为: passwd 账户名

 只有root用户才有权设置指定账户的密码,一般用户只能设置或修改自己账户的密码。例如,若要设置test账户的登录密码,则操作命令为:

#passwd test
  Changing password for user test.
  New password: #键入密码
  Retype new password: #重输密码
  passwd: all authentication tokens updated successfully.

在Linux中,除了用户账户可被锁定外,账户密码也可被锁定,任何一方被锁定后,都将导致该账户无法登录系统。只有root用户才有权执行该命令锁定账户密码使用带-l参数的 passwd命令,其用法为:

    passwd –l 账户名

 示例:

 锁定test账户的密码:

#passwd –l test

用户密码被锁定后,若要解锁,使用带-u参数的 passwd命令,该命令只有root用户才有权执行,其用法为:

    passwd –u 要解锁的账户名

 示例:

  解锁test账户的密码:

#passwd –u test

四、Linux中用户组管理

1、创建用户组

  创建用户组使用 groupadd命令,其命令用法为:

 groupadd 用户组名称

 示例:若要创建一个名为test的用户组,则操作命令为:

#groupadd test
    #tail –l /etc/group
    test: x: 1001 #该用户组的ID为1001

2、删除用户组

 删除用户组使用groupdel命令来实现,其用法为:

  groupdel 用户组名

 示例:删除test用户组,则操作命令为:

#groupdel test

 注:在删除用户组时,被删除的用户组不能是某个账户的私有用户组,否则将无法删除,若要删除,则应该先删除引用该私有用户组的账户,然后再删除用户组。

3、修改用户组属性

(1)将用户添加到指定组,使其成为该组的成员。实现命令为:

    gpasswd –a 用户账户 用户组名

 示例:把用户test加入到gtest用户组中,操作命令为:

#gpasswd –a test gtest
    Adding user test to group gtest

(2)从用户组中移除某用户,实现命令为:

    gpasswd –d 用户账户名 用户组名

 示例:从gtest用户组中,将test用户组移除,操作命令为:

#gpasswd –d test gtest
    Removing user test from group gtest

(3)查询某用户属于哪个用户组,实现命令为:

    groups 用户名

 示例:查询root用户都隶属于那些用户组,操作命令为:

#groups root


相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
9天前
|
人工智能 分布式计算 大数据
Linux操作系统:开源力量的崛起与影响###
一场技术革命的火种,如何燎原? 本文将带您深入探索Linux操作系统的诞生背景、核心特性及其对现代科技世界的深远影响。从1991年芬兰学生Linus Torvalds的一个小众项目,到如今成为支撑全球无数服务器、超级计算机及物联网设备的基石,Linux的发展既是一部技术创新史,也是开源文化胜利的见证。通过剖析其设计哲学、安全性、灵活性等关键优势,结合实例展示Linux在云计算、大数据处理等领域的广泛应用,本文旨在揭示Linux为何能在众多操作系统中脱颖而出,以及它如何塑造了我们今天的数字生活。 ###
|
6天前
|
安全 Linux 编译器
探索Linux内核的奥秘:从零构建操作系统####
本文旨在通过深入浅出的方式,带领读者踏上一段从零开始构建简化版Linux操作系统的旅程。我们将避开复杂的技术细节,以通俗易懂的语言,逐步揭开Linux内核的神秘面纱,探讨其工作原理、核心组件及如何通过实践加深理解。这既是一次对操作系统原理的深刻洞察,也是一场激发创新思维与实践能力的冒险。 ####
|
1天前
|
物联网 Linux 5G
Linux操作系统的演变与未来趋势####
本文深入探讨了Linux操作系统的发展历程,从最初的一个学生项目到如今全球最流行的开源操作系统之一。文章将分析Linux的核心优势、关键特性以及它在云计算、物联网和嵌入式系统中的应用前景。通过具体案例展示Linux如何推动技术创新,并预测其在未来技术生态中的角色。本文旨在为读者提供一个全面而深入的理解,帮助他们认识到Linux在现代计算环境中的重要性及其未来的潜力。 ####
|
1天前
|
人工智能 安全 物联网
Linux操作系统的演变与未来:从开源精神到万物互联的基石###
本文是关于Linux操作系统的演变、现状与未来的深度探索。Linux,这一基于Unix的开源操作系统,自1991年由林纳斯·托瓦兹(Linus Torvalds)学生时代创造以来,已经彻底改变了我们的数字世界。文章首先追溯了Linux的起源,解析其作为开源项目的独特之处;随后,详细阐述了Linux如何从一个小众项目成长为全球最广泛采用的操作系统之一,特别是在服务器、云计算及嵌入式系统领域的主导地位。此外,文章还探讨了Linux在推动技术创新、促进协作开发模式以及保障信息安全方面的作用,最后展望了Linux在未来技术趋势中的角色,包括物联网、人工智能和量子计算等前沿领域的潜在影响。 ###
|
5天前
|
运维 物联网 Linux
Linux操作系统的演变与未来趋势####
本文通过探讨Linux操作系统的历史沿革、当前主流版本的特点,以及其在服务器、云计算和物联网等新兴领域的应用,旨在揭示Linux在现代计算环境中的重要性。此外,文章还将分析Linux面临的挑战与机遇,预测其未来的发展趋势。希望通过这篇文章,读者能够更好地理解Linux的价值,并对其未来充满期待。 ####
|
5天前
|
安全 Android开发 iOS开发
Android vs iOS:探索移动操作系统的设计与功能差异###
【10月更文挑战第20天】 本文深入分析了Android和iOS两个主流移动操作系统在设计哲学、用户体验、技术架构等方面的显著差异。通过对比,揭示了这两种系统各自的独特优势与局限性,并探讨了它们如何塑造了我们的数字生活方式。无论你是开发者还是普通用户,理解这些差异都有助于更好地选择和使用你的移动设备。 ###
14 3
|
9天前
|
网络协议 Linux 调度
深入探索Linux操作系统的心脏:内核与系统调用####
本文旨在揭开Linux操作系统中最为核心的部分——内核与系统调用的神秘面纱,通过生动形象的语言和比喻,让读者仿佛踏上了一段奇妙的旅程,从宏观到微观,逐步深入了解这两个关键组件如何协同工作,支撑起整个操作系统的运行。不同于传统的技术解析,本文将以故事化的方式,带领读者领略Linux内核的精妙设计与系统调用的魅力所在,即便是对技术细节不甚了解的读者也能轻松享受这次知识之旅。 ####
|
5天前
|
存储 Linux Shell
深入理解Linux操作系统的启动过程
【10月更文挑战第21天】本文将深入浅出地介绍Linux操作系统的启动过程,包括BIOS、引导加载程序、内核初始化和系统服务启动等环节。通过阅读本文,您将了解到Linux启动过程中的关键步骤和相关概念,以及如何优化启动速度。
|
5天前
|
缓存 算法 安全
深入理解Linux操作系统的心脏:内核与系统调用####
【10月更文挑战第20天】 本文将带你探索Linux操作系统的核心——其强大的内核和高效的系统调用机制。通过深入浅出的解释,我们将揭示这些技术是如何协同工作以支撑起整个系统的运行,同时也会触及一些常见的误解和背后的哲学思想。无论你是开发者、系统管理员还是普通用户,了解这些基础知识都将有助于你更好地利用Linux的强大功能。 ####
13 1
|
10天前
|
监控 Linux 云计算
Linux操作系统在云计算环境中的实践与优化###
【10月更文挑战第16天】 本文探讨了Linux操作系统在云计算环境中的应用实践,重点分析了其在稳定性、安全性和高效性方面的优势。通过具体案例,阐述了Linux如何支持虚拟化技术、实现资源高效分配以及与其他开源技术的无缝集成。文章还提供了针对Linux系统在云计算中的优化建议,包括内核参数调整、文件系统选择和性能监控工具的应用,旨在帮助读者更好地理解和应用Linux于云计算场景。 ###
13 3