【Linux】(二)—— 用户和用户组管理

在了解了Linux基础命令格式后,今天我要介绍的是Linux的用户管理

目录

    • root用户
    • 用户管理操作
      • 用户ID
      • 切换用户
      • 查看用户
      • 添加用户
      • 指定密码
      • 修改用户信息
      • 删除用户
      • 退出登录
      • 查看登陆系统的用户
    • 用户组的管理
      • 增加新用户组
      • 查看用户组
      • 删除用户组
      • 修改用户组
      • 切换用户组
    • 与用户有关的系统文件

root用户

root用户是Linux系统中的超级用户账户。它拥有对系统无限制的权限,能够执行任何操作,没有任何文件或命令对root用户是禁止访问的。root用户的权限等同于操作系统本身,可以执行如下关键任务:

  1. 管理系统文件和配置:root用户可以读取、修改或删除任何系统文件,包括重要的配置文件和其他用户的数据。
  2. 用户和权限管理:可以创建、删除用户账户和用户组,修改用户权限和所有权。
  3. 安装和管理软件:无需额外权限即可安装、更新或卸载系统软件和库。
  4. 硬件管理:可以启用或禁用系统硬件,进行硬件相关的配置。
  5. 系统服务管理:可以启动、停止或重启系统服务和守护进程。
  6. 系统维护和修复:在系统出现问题时,root权限对于故障诊断和修复至关重要。

尽管root用户权限极大,便于系统管理,但同时也极其危险。错误的操作或被恶意利用都可能导致系统崩溃或数据丢失。因此,日常操作通常建议使用普通用户权限,并仅在必要时通过sudo或其他机制临时提升权限执行特定任务。为了保护root账户的安全,应设置强密码,并限制不必要的root登录,以减少潜在风险。

请添加图片描述

在终端输入指令前面为$表示普通用户,#表示当前身份为root,低权限切换至高权限需要输密码,高权限切换至低权限不需要。

普通用户无法直接操作根目录(用户管理属于根目录下的内容)下的东西,在学习用户管理时可以使用root用户

首先激活root用户,Ubuntu发行版本默认情况下root账户是被禁用的,你需要先激活root账户并设置密码。可以通过 sudo passwd root 命令来设置root用户的密码。

然后从当前用户切换至root用户的命令为:

su root

如果你的命令行输入处显示用户名为roor且$变成#,说明成功切换到了root用户:

请添加图片描述

用户管理操作

用户ID

用户ID(User ID,简称UID)在Linux及类UNIX系统中是一个非常重要的概念,它是每个用户账户的唯一数字标识符。下是关于用户ID的一些关键点:

  1. 唯一性:每个用户的UID都是独一无二的,确保系统能够准确区分不同的用户。
  2. 权限关联:UID与用户权限紧密相关。例如,UID为0的用户是root用户,拥有系统中的最高权限。普通用户的UID通常大于500,以区分系统预设的用户和管理员或服务账户。
  3. 文件权限:文件和目录的所有权以及访问权限通过UID和组ID(GID)来确定。每个文件或目录都有一个所有者(与UID关联)和所属组(与GID关联),这决定了用户能否读、写或执行这些文件。
  4. 存储位置:用户的用户名与对应的UID(以及其他用户信息)存储在/etc/passwd文件中。而实际的密码散列值(如果使用shadow密码,则存储在/etc/shadow)则不直接与UID在同一个地方展示,以增加安全性。
  5. 查看UID:可以通过命令行工具id或结合用户名使用id username来查看用户的UID。也可以直接使用whoami命令查看当前登录用户的UID。
  6. 创建用户时的UID分配:使用命令如useradd创建新用户时,如果不特别指定,系统会自动分配一个大于500的UID,以符合常规的用户与系统用户的区分标准。
  7. 系统保留UID:范围在0到499的UID通常被系统保留给预定义的系统用户和服务账户,如root(UID 0)、bin、sys等,这些用户通常用于运行系统关键服务和进程。

理解用户ID及其在Linux系统中的作用对于管理和维护系统安全、权限分配至关重要。

切换用户

切换用户的基本语法如下:

su 用户名

查看用户

compgen -u

此命令列出了所有可登录的用户账户名称,是一个快速查看用户名列表的方法。

添加用户

添加新用户的基本语法和参数选项解释如下:

useradd [-options] 用户名

[-options]可选:
-c comment # 指定一段注释性描述。
-d 目录 # 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 # 指定用户所属的用户组。
-G 用户组 # 指定用户所属的附加组。
-s Shell文件 # 指定用户的登录Shell。
-u 用户号 # 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。

【示例】

useradd –d  /home/sam -m sam   #创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录 /home/sam

useradd -s /bin/sh -g group –G adm,root gem   # 新建了一个用户gem,该用户的登录Shell是 `/bin/sh`,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。

指定密码

用户账号刚创建时没有口令,被系统锁定,无法使用,必须为其指定密码后才可以使用,即使是指定空密码。其基本语法和参数选项如下:

passwd [-options] 用户名

[-options]可选:
-l # 锁定口令,即禁用账号。
-u # 口令解锁。
-d # 使账号无口令。
-f # 强迫用户下次登录时修改口令。

【示例】

passwd sam   # 为其设置密码并激活sam用户

修改用户信息

修改用户的基本语法如下:

usermod [-options] 用户名

usermod命令的选项和添加用户一样,可以对已经存在的用户信息进行修改

删除用户

删除用户的基本语法和参数选项解释如下:

userdel [-options] 用户名

[-options]可选:
-r # 把用户的主目录一起删除。

退出登录

退出登录的基本语法如下:

exit

多个用户的登录顺序和栈一样,先退出的是后登录的

查看登陆系统的用户

查看当前系统用户的基本语法如下:

who

用户组的管理

在Linux系统中,用户组是一种将多个用户账号聚集在一起的方式,以便简化权限管理和资源访问控制。每个用户至少属于一个基本组(primary group),并且还可以属于零个或多个附加组(supplementary groups)。每个用户组都有一个唯一的组标识符,称为组ID(Group ID, GID)。

增加新用户组

添加用户组的基本语法和参数选项如下:

groupadd [-options] 用户组

[-options]可选:
-g # GID 指定新用户组的组标识号(GID)。省略的话默认在当前已有的最大组标识号的基础上加1。
-o # 与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

查看用户组

使用 cat 命令查看 /etc/group 文件:

cat /etc/group

这个命令会列出系统中所有用户组的信息,包括用户组名、组密码占位符、GID(组ID)以及附加到该组的用户列表。

查看指定用户的用户组

groups 用户名

删除用户组

删除用户组的基本语法如下:

groupdel 用户组

修改用户组

可以修改用户组的组名和组id号,修改用户组的基本语法和参数选项如下:

groupmod [-options] 用户组

[-options]可选:
-g GID # 为用户组指定新的组标识号。
-o # 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n 新用户组 # 将用户组的名字改为新名字

切换用户组

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。其基本语法如下:

newgrp root   
# 这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。

与用户有关的系统文件

/etc/passwd文件中记录了所有的用户信息,对所有人都是只读的,每一条记录表示一个用户,按照以下规则划分信息:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

系统中有一类用户称为伪用户(pseudo users)。这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。

常见的伪用户如下所示:

bin 拥有可执行的用户命令文件 
sys 拥有系统文件 
adm 拥有帐户文件 
uucp UUCP使用 
lp lp或lpd子系统使用 
nobody NFS使用

由于/etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。 有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。/etc/shadow文件中存放的记录按照以下规则划分。

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

用户组的所有信息都存放在/etc/group中,/etc/group文件中存放的记录按照以下规则划分。

组名:口令:组标识号:组内用户列表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/683654.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GAMES101笔记

Games101 文章目录 Games101一、Review of Linear Algebra 线性代数向量向量点乘:判断同向反向、接近程度点乘基本属性点乘坐标系运算向量投影向量叉乘:判定左右、判定内外叉乘基本属性(右手坐标系):不满足交换律叉乘坐…

CSS函数:fit-content与matrix的使用

网格函数 fit-content()属于网格函数,除此之外的网格函数还有:CSS函数: 实现数据限阈的数字函数。顾名思义,这三个函数只能在网格布局中使用。fit-content()函数主要是用于给定布局可用大小,适应内容,其功…

【数据结构】排序(直接插入、折半插入、希尔排序、快排、冒泡、选择、堆排序、归并排序、基数排序)

目录 排序一、插入排序1.直接插入排序2.折半插入排序3.希尔排序 二、交换排序1.快速排序2.冒泡排序 三、选择排序1. 简单选择排序2. 堆排序3. 树排序 四、归并排序(2-路归并排序)五、基数排序1. 桶排序(适合元素关键字值集合并不大)2. 基数排序基数排序的…

十六、【源码】plugins插件

源码地址:https://github.com/mybatis/mybatis-3/ 仓库地址:https://gitcode.net/qq_42665745/mybatis/-/tree/16-plugin plugins插件 plugins功能分为两部分 1.首先是在xml解析时解析出配置的插件类,并实例化放入拦截器链中 2.其次执行…

量化投资分析平台 迅投 QMT(四)获取标的期权的代码

量化投资分析平台 迅投 QMT [迅投 QMT](https://www.xuntou.net/?user_code7NYs7O)我目前在使用有了底层标的如何获取期权的交易代码呢?上代码历史帖子 迅投 QMT 我目前在使用 两个月前(2024年4月)迅投和CQF有一个互动的活动,进…

Java实现2048游戏源代码(启动即可玩)

使用Java语言从零到一开发经典2048游戏的全部源代码及详尽的开发教程。 适合Java初学者、游戏开发爱好者以及想要深入理解Swing GUI框架的开发者学习与参考。 知识领域:游戏开发、Java编程、图形用户界面(GUI)设计 技术关键词:Java Swing、事件监听、多…

“探索‘循环购‘:快消品行业的新商业模式与增长策略“

大家好,我是吴军,来自一家深耕于软件开发和商业模式创新的科技公司。我们的专长在于为各类企业量身打造商城系统,并提供个性化的商业模式解决方案。迄今为止,我们已经助力众多企业成功实施了超过200种前沿的商业模式,实…

阿奇科技 简单java-swing计算器源码(可用于课设等)

此系统用的技术有java swing! 实现的功能: 加减乘除(可以进行小数运算) 清空数据 最小化 小巧方便,功能齐全! 页面截图: 源码地址:点击这里下载源码 获取全套代码,或咨询更多代码…

【JavaEE】Spring Boot 日志详解

一 日志概述 日志是用于记录系统运行状态、用户操作和重大事件的工具。 1.日志的用途 系统监控 监控现在几乎是一个成熟系统的标配, 我们可以通过日志记录这个系统的运行状态, 每⼀个方法的响应时间, 响应状态等, 对数据进行分析, 设置不同的规则, 超过阈值时进行报警. 比如统…

科技赋能,无障碍出行的新纪元

在现代社会,公共设施的建设不仅是衡量城市文明程度的标尺,更是实现社会公平与包容的重要载体。对于盲人群体而言,一个完善的公共设施网络,意味着他们能够更加独立、自信地融入社会,享受与视力健全者同等的公共服务与便…

湖南(品牌控价)源点调研 手机价格管理对品牌的影响分析

前言:手机自发明以来,过去一直是国际品牌占主导地位,从最初的爱立信、摩托罗拉,到后来的诺基亚、三星,苹果在这个手机行业里,竞争激励,没有百年企业,每个品牌的盛衰都有背后的历史背…

软件测试——Java自动化测试Selenium

目录 1.运行环境 2.环境配置 3.第一个浏览器程序 4.浏览器操作 5.元素定位 6.元素操作常用API 7.特殊元素定位与操作 8.元素三大等待 9.iframe操作 10.window操作 11.select选择框 12.js语句执行 13.鼠标操作 14.截图操作 1.运行环境 编译工具:IDEA …

教师自费出书的注意事项有哪些?

备案主编专著的优势:(qkfb88688) 1、副高、正高职称最高学术成果 2、专著可以代替核心 3、周期短、出书快、可重复使用 4、双号齐全:ISBN~CIP 5、版权长期有效 教师自费出书有以下一些注意事项: 关于书稿&…

python---正则表达式

本章目标: 1:能够知道在Python中使用正则要导入的模块; [了解] re模块 2:能够使用re模块匹配单个字符; [重点] \d \w 正则表达式的概述: 基本介绍 正则表达式,也叫做规则表达式,通常会说成[正则] 实际上正则表达式就是指符合一定规则的字符串,同时他能用于检查一段…

MyBatis拦截器使用方法

前言 MyBatis拦截器可以做的工作:SQL修改,分页操作,数据过滤,SQL执行时间性能监控等。 1. 基础介绍 1.1. 核心对象 从MyBatis代码实现的角度来看,MyBatis的主要的核心部件有以下几个: Configuration&am…

OpenStack所支持的虚拟化技术和KVM、Xen、Hyer-V、QEMU、Libvirt说明

OpenStack所支持的虚拟化技术主要包括以下几种: KVM (Kernel-based Virtual Machine): 基于Linux内核的虚拟化技术。在Linux内核中添加一个虚拟化模块来实现虚拟机的运行。是OpenStack用户使用较多的虚拟化技术,支持OpenStack的所有特性。通过QEMU模拟器…

【NoSQL数据库】Redis——哨兵模式

Redis——哨兵模式 Redis哨兵 Redis——哨兵模式1.什么是哨兵机制(Redis Sentinel)1.1 哨兵的作用 2.哨兵的运行机制3.故障处理redis常见问题汇总1、redis缓存击穿是什么?如何解决?2、redis缓存穿透是什么?如何解决&am…

详解!Python怎么配置环境变量

详解!Python怎么配置环境变量 许多刚开始学习编程的初学者在 python的安装上会抱有一定的疑惑,为什么明明已经安装好了 python 环境,但并不能运行python 代码,这是因为 python 的安装过程中还有一步环境变量的配置,接…

微信“对方正在输入”背后的小心思:保持隐秘感,享受宁静的交流

微信,这个伴随我们起居、工作的超级应用,不仅仅是一款聊天软件,它几乎成为了我们社交生活的一部分。它的便捷,让我们的日常沟通如鱼得水。然而,在这个几乎完美的社交工具中,有一个功能,让不少人…

CSS真题合集(二)

CSS真题合集(二) 11. css3新增特性12. css3动画12.1 关键帧动画 (keyframes)12.2 animation12.3 transition12.4 transform 13. grid网格布局13.1 使用display: grid或display: inline-grid的HTML元素。13.2 定义网格13.3 13.4 自动填充和自动放置13.4 对…