《Linux 简易速速上手小册》第5章: 用户与群组管理(2024 最新版)

在这里插入图片描述

文章目录

  • 5.1 管理用户账户
    • 5.1.1 重点基础知识
    • 5.1.2 重点案例:创建一个新的开发者账户
    • 5.1.3 拓展案例 1:禁用用户登录
    • 5.1.4 拓展案例 2:设置账户到期
  • 5.2 群组概念与管理
    • 5.2.1 重点基础知识
    • 5.2.2 重点案例:为项目团队设置群组
    • 5.2.3 拓展案例 1:限制群组成员对文件的写权限
    • 5.2.4 拓展案例 2:创建管理账户的群组
  • 5.3 高级用户管理技巧
    • 5.3.1 重点基础知识
    • 5.3.2 重点案例:迁移用户数据到新服务器
    • 5.3.3 拓展案例 1:批量添加用户
    • 5.3.4 拓展案例 2:设置账户到期日期

5.1 管理用户账户

在 Linux 的大家庭中,用户账户是让每个人拥有自己空间和权限的方式。像是家里的房间,每个人都有自己的一间,可以装饰和使用。让我们来看看如何高效管理这些“房间”和它们的“钥匙”。

5.1.1 重点基础知识

  • useradd: 创建新用户的命令。使用 -m 选项同时创建用户的家目录,-s 选项指定用户的默认 shell。
  • passwd: 设置或更改用户密码的命令。一个强密码是保护用户账户安全的第一步。
  • usermod: 修改用户账户属性的命令,例如更改用户名或者用户所属的群组。
  • userdel: 删除用户账户的命令。使用 -r 选项同时删除用户的家目录和邮件目录。

5.1.2 重点案例:创建一个新的开发者账户

假设你需要为一个新加入的开发者 Bob 创建一个账户,并设置必要的环境。

  1. 创建用户:

    sudo useradd -m -s /bin/bash bob
    

    这条命令创建了一个新用户 Bob,为他创建了家目录,并设置默认 shell 为 bash。

  2. 设置密码:

    sudo passwd bob
    

    接下来,你会被提示输入和确认 Bob 的密码。

  3. 添加到 sudo 群组 (在 Debian 基系统):

    sudo usermod -aG sudo bob
    

    这样 Bob 就能执行需要管理员权限的命令了。

5.1.3 拓展案例 1:禁用用户登录

如果 Bob 暂时不需要访问系统,你可以禁用他的登录,而不是删除他的账户。

sudo usermod -L bob

这个命令会锁定 Bob 的账户,使其不能登录。当需要恢复账户时,使用 -U 参数解锁。

5.1.4 拓展案例 2:设置账户到期

对于只在一段时间内需要访问系统的临时用户,你可以设置一个账户到期日期。

sudo usermod -e 2024-12-31 bob

这条命令设置 Bob 的账户在 2024 年 12 月 31 日后过期。

通过这些案例,你可以看到 Linux 提供了丰富的工具来管理用户账户,无论是创建新用户,还是调整现有用户的设置。作为系统管理员,掌握这些命令将帮助你保持系统的秩序和安全,确保每个用户都有适合自己的“房间”和“钥匙”。

在这里插入图片描述


5.2 群组概念与管理

在 Linux 的世界里,群组扮演着管理用户权限和简化系统管理任务的关键角色。想象一下,群组就像是一个社交俱乐部,每个俱乐部都有自己的活动和规则,成员可以享受俱乐部提供的特定资源。

5.2.1 重点基础知识

  • 群组的类型: Linux 中主要有两种类型的群组:主群组(Primary Group)和附加群组(Supplementary Group)。用户的文件默认继承主群组,而附加群组用于特定的访问权限管理。
  • groupadd: 创建新群组的命令。例如,sudo groupadd developers 创建一个名为 “developers” 的新群组。
  • usermod: 将用户添加到群组的命令。使用 -aG 选项将用户添加到一个或多个附加群组。
  • groups: 查看用户所属群组的命令。只需输入 groups 用户名 即可查看。
  • gpasswd: 管理群组成员的工具。可以用来添加或删除群组成员。

5.2.2 重点案例:为项目团队设置群组

假设你正在管理一个项目团队,需要创建一个群组 “project_team”,以便团队成员可以共享文件和资源。

  1. 创建群组:

    sudo groupadd project_team
    
  2. 添加用户到群组:
    假设你需要将 Alice 和 Bob 添加到 “project_team” 群组。

    sudo usermod -aG project_team alice
    sudo usermod -aG project_team bob
    
  3. 设置文件共享权限:
    创建一个共享目录,并设置适当的群组和权限,以便团队成员可以读写。

    mkdir /home/shared_project
    sudo chgrp project_team /home/shared_project
    sudo chmod 2775 /home/shared_project
    

    这里,chmod 2775 设置了目录的 SGID(Set Group ID),确保在此目录下创建的文件继承父目录的群组。

5.2.3 拓展案例 1:限制群组成员对文件的写权限

如果你想让团队成员能够读取但不修改某些文件,你可以只设置读权限。

sudo chown :project_team important_file
sudo chmod 2750 important_file

这样,只有群组成员可以读取 “important_file”,但不能修改它。

5.2.4 拓展案例 2:创建管理账户的群组

对于需要管理服务器的管理员,你可以创建一个 “admins” 群组,并为其配置 sudo 权限。

sudo groupadd admins
sudo usermod -aG admins alice

然后,在 /etc/sudoers 文件中配置 “admins” 群组的 sudo 权限。

通过这些案例,我们可以看到群组在 Linux 系统中的重要性以及如何利用群组来有效管理用户权限和资源共享。无论是促进团队协作,还是维护系统安全,合理地设置和管理群组都是至关重要的。

在这里插入图片描述


5.3 高级用户管理技巧

在 Linux 的复杂世界里,简单的用户添加和删除只是冰山一角。要成为真正的 Linux 管理员,你需要掌握一些高级技巧,让你能够更灵活地管理用户和群组,以适应不同的需求和场景。

5.3.1 重点基础知识

  • 修改用户信息usermod 命令不仅能够添加用户到群组,还能修改用户的登录名、家目录、登录Shell等信息。例如,usermod -l 新用户名 旧用户名 可以更改用户的登录名。
  • 更改家目录:使用 -d 选项配合 usermod 命令可以更改用户的家目录。例如,usermod -d /新/家目录 用户名
  • 更改登录 Shell:如果用户希望使用不同的 Shell,你可以用 -s 选项来更改。例如,usermod -s /bin/zsh 用户名
  • 锁定和解锁用户账户passwd 命令的 -l 选项可以锁定用户账户,防止其登录。相反,-u 选项用于解锁账户。

5.3.2 重点案例:迁移用户数据到新服务器

假设你需要将用户 Alice 的账户从一台旧服务器迁移到一台新服务器,同时保持所有的用户数据和配置不变。

  1. 在新服务器上创建相同用户:

    sudo useradd -m -s /bin/bash alice
    
  2. 迁移家目录数据:
    使用 rsyncscp 将旧服务器上 Alice 的家目录数据复制到新服务器。确保在新服务器上使用相同的路径。

    rsync -avz /旧/家目录/alice 新服务器IP:/新/家目录/alice
    
  3. 保持 UID 和 GID 一致:
    为了避免权限问题,确保在新服务器上 Alice 的 UID 和 GID 与旧服务器上的一致。

    sudo usermod -u UID alice
    sudo groupmod -g GID alice
    

5.3.3 拓展案例 1:批量添加用户

如果你需要为一个新项目团队批量创建用户账户,你可以编写一个脚本来自动化这个过程。

for name in user1 user2 user3; do
    sudo useradd -m $name
    echo "123456" | sudo passwd --stdin $name
done

5.3.4 拓展案例 2:设置账户到期日期

对于临时访问的合作伙伴,你可能希望他们的账户在一段时间后自动过期。

sudo usermod -e 2024-12-31 alice

这会设置 Alice 的账户在 2024 年 12 月 31 日后自动过期,届时她将无法登录系统。

通过这些案例,我们可以看到高级用户管理技巧在日常系统管理中的应用非常广泛,无论是迁移用户数据,批量创建用户,还是设置账户的到期日期,都是为了提高管理效率,同时保证系统的安全性和用户的便利性。

掌握这些高级技巧可以帮助你更好地管理 Linux 系统中的用户和群组,无论是在大型企业环境还是小型团队中。通过灵活使用这些工具和命令,你将能够应对各种用户管理场景,确保每个用户都能在需要的时候获得适当的资源和权限,同时保护系统免受未授权访问的威胁。

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

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

相关文章

MyBatis篇----第一篇

系列文章目录 文章目录 系列文章目录前言一、什么是 Mybatis?二、Mybaits 的优点三、MyBatis 框架的缺点前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一、什么…

TO B企业如何通过四个步骤构建高效的 PLG销售体系

在当今以客户为中心的市场环境中,产品引导增长(Product-Led Growth,PLG)模式对于TO B企业而言,不仅是一种趋势,更是实现可持续增长的关键策略。构建有效的 PLG销售体系 需要整合多个关键部分:客…

LayoutInflater源码解析及常见相关报错分析

在日常Android开发中,最经常使用的RecyclerView控件是大家都绕不开的,而编写其Adapter时更离不开LayoutInflater的调用。当然,如果你做这一行有些时日了,相信你对其使用一定是炉火纯青了。即使如此,我觉得LayoutInflat…

linux应用 进程间通信之信号量(POSIX)

1、前言 1.1 定义 POSIX信号量是一种用于同步进程之间对共享资源访问的机制。它允许进程在访问共享资源之前进行互斥和同步操作,以确保数据的一致性和正确性。POSIX信号量通常由一个整数值表示,可以进行原子增减操作,以及等待和通知操作。 …

Verilog刷题笔记29

题目: Create a 100-bit binary ripple-carry adder by instantiating 100 full adders. The adder adds two 100-bit numbers and a carry-in to produce a 100-bit sum and carry out. To encourage you to actually instantiate full adders, also output the ca…

《Linux 简易速速上手小册》第2章: 命令行的艺术(2024 最新版)

文章目录 2.1 基本 Linux 命令2.1.1 重点基础知识2.1.2 重点案例:整理下载文件夹2.1.3 拓展案例 1:批量重命名文件2.1.4 拓展案例 2:查找并删除特定文件 2.2 文件和目录管理2.2.1 重点基础知识2.2.2 重点案例:部署一个简单的网站2…

从零开始学howtoheap:理解fastbins的​unsorted bin攻击

how2heap是由shellphish团队制作的堆利用教程,介绍了多种堆利用技术,后续系列实验我们就通过这个教程来学习。环境可参见从零开始配置pwn环境:从零开始配置pwn环境:从零开始配置pwn环境:优化pwn虚拟机配置支持libc等指…

政安晨:在Jupyter中【示例演绎】Matplotlib的官方指南(二){Image tutorial}·{Python语言}

咱们接着上一篇,这次咱们讲使用Matplotlib绘制图像的简短尝试。 我的这个系列的上一篇文章在这里: 政安晨:在Jupyter中【示例演绎】Matplotlib的官方指南(一){Pyplot tutorial}https://blog.csdn.net/snowdenkeke/ar…

【Java八股面试系列】JVM-类和对象加载过程

目录 类和对象的加载过程 类的生命周期 类的加载过程 加载 验证 准备 解析 初始化 类卸载 对象的加载过程 类和对象的加载过程 什么是类加载和对象加载? 类加载(Class Loading):这是指JVM在运行时将类的字节码文件加载到内存中的…

【5G NR】【一文读懂系列】移动通讯中使用的信道编解码技术-卷积码原理

目录 一、引言 二、卷积编码的发展历史 2.1 卷积码的起源 2.2 主要发展阶段 2.3 重要里程碑 三、卷积编码的基本概念 3.1 基本定义 3.2 编码器框图 3.3 编码多项式 3.4 网格图(Trellis)描述 四、MATLAB示例 一、引言 卷积编码,作为数字通信领域中的一项…

快速学习Spring

Spring 简介 Spring 是一个开源的轻量级、非侵入式的 JavaEE 框架&#xff0c;它为企业级 Java 应用提供了全面的基础设施支持。Spring 的设计目标是简化企业应用的开发&#xff0c;并解决 Java 开发中常见的复杂性和低效率问题。 Spring常用依赖 <dependencies><!-…

java之Maven

1. maven Maven是管理和构建java项目的工具 项目依赖资源(jar包)的管理,避免版本冲突统一项目结构项目构建&#xff0c;标准跨平台(Linux,window,MacOS)的自动化项目管理 2.maven依赖仓库 2.maven安装 maven安装视频教程 3. IDEA集成Maven 4. maven的依赖范围 5. maven生命…

可视化大屏:工作要干的好,也要汇报好,不然资源为啥向你倾斜。

有些友友们感受不到可是大屏的价值&#xff0c;认为没啥作用&#xff0c;这就是典型的下层思维&#xff0c;格局小了。 估计也没有当过领导或者管理层。可视化大屏的其他价值放在一边不说&#xff0c;就单纯这个汇报价值就十分巨大&#xff0c;包括对内和对外的汇报。 如何让…

【51单片机】DS18B20(江科大)

一、DS18B20温度传感器 1.DS18B20介绍 DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器,具有功能强大、硬件简单、易扩展、抗干扰性强等特点 测温范围 :- 55℃到125℃ 通信接口:1-Wire(单总线) 其它特征:可形成…

【lesson51】信号之信号处理

文章目录 信号处理可重入函数volatileSIGCHLD信号 信号处理 信号产生之后&#xff0c;信号可能无法被立即处理&#xff0c;一般在合适的时候处理。 1.在合适的时候处理&#xff08;是什么时候&#xff1f;&#xff09; 信号相关的数据字段都是在进程PCB内部。 而进程工作的状态…

【动态规划】【数学】【C++算法】1449. 数位成本和为目标值的最大数字

作者推荐 【深度优先搜索】【树】【图论】2973. 树中每个节点放置的金币数目 本文涉及知识点 动态规划汇总 LeetCode1449. 数位成本和为目标值的最大数字 给你一个整数数组 cost 和一个整数 target 。请你返回满足如下规则可以得到的 最大 整数&#xff1a; 给当前结果添加…

《UE5_C++多人TPS完整教程》学习笔记1 ——《P2 关于本课程(About This Course)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P2 关于本课程&#xff08;About This Course&#xff09;》 的学习笔记&#xff0c;该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版&#xff0c;UP主&#xff08;也是译者&…

使用 Windows 11/10 上的最佳 PDF 转 Word 转换器释放 PDF 的潜力

毫无疑问&#xff0c;PDF 是最好的文档格式之一&#xff0c;但就像其他格式一样&#xff0c;有时它们确实会带来一些限制。例如&#xff0c;在某些情况下&#xff0c;您可能想要将 PDF 转换为 Word。在这种情况下&#xff0c;您始终可以借助 PDF 到 Word 转换器的帮助。 为了说…

ChatGPT高效提问—prompt实践(生成VBA)

ChatGPT高效提问—prompt实践&#xff08;生成VBA&#xff09; 2. 生成VBA函数操作Excel ​ 当前Excel表格数据无背景颜色&#xff0c;区分不明显。假如我们想美化数据展示效果&#xff0c;把标题行设置为浅蓝色&#xff0c;其余奇数行设置为橙色&#xff0c;该怎么操作呢&am…

Spark MLlib

目录 一、Spark MLlib简介 &#xff08;一&#xff09;什么是机器学习 &#xff08;二&#xff09;基于大数据的机器学习 &#xff08;三&#xff09;Spark机器学习库MLlib 二、机器学习流水线 &#xff08;一&#xff09;机器学习流水线概念 &#xff08;二&#xff09…