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

news2024/10/6 6:32:31

在这里插入图片描述

文章目录

  • 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 系统中的用户和群组,无论是在大型企业环境还是小型团队中。通过灵活使用这些工具和命令,你将能够应对各种用户管理场景,确保每个用户都能在需要的时候获得适当的资源和权限,同时保护系统免受未授权访问的威胁。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML 超文本标记语言

超文本标记语言 HTML 在一个客户程序主窗口上显示出的万维网文档称为页面 (page)。 页面制作的标准语言:HTML。 超文本标记语言 HTML (HyperText Markup Language) 是一种制作万维网页面的标准语言,它消除了不同计算机之间信息交流的障碍&#xff0c…

分享89个jQuery特效,总有一款适合您

分享89个jQuery特效,总有一款适合您 89个jQuery特效下载链接:https://pan.baidu.com/s/1krmOd12n09u2vROfeEL2KQ?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理…

蓝桥杯2023真题(2)

1.硬币兑换 #include <iostream> using namespace std; int main() {int a[5000] {0}, ans 0;//coin1for(int i 1; i < 2023; i){//coin2for(int j i 1; j < 2023; j){a[i j] i;ans max(ans, a[i j]);}}cout<<ans;return 0; }2.更小的数 //暴力枚举…

idea中vue文件如何快捷打出html标签结构,不写<

例如写一个<button></button>标签&#xff1a;快捷键如下 先写一个button&#xff0c;然后再按tab键即可自动生成一对标签。 演示&#xff1a; 步骤一&#xff1a; 步骤二&#xff1a;

【Java程序设计】【C00271】基于Springboot的地方美食分享网站(有论文)

基于Springboot的地方美食分享网站&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的地方美食分享网站 本系统分为系统功能模块、管理员功能模块、以及用户功能模块。 系统功能模块&#xff1a;网站首页可以查看首…

揭秘外观模式:简化复杂系统的关键设计策略

前言 外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;它隐藏了系统的复杂性&#xff0c;并向客户端提供了一个可以访问系统的接口。这种类型的设计模式向现有的系统添加一个接口&#xff0c;来隐藏系统的复杂性。这种模式涉及到一个单一的类…

Android的常用Drawable讲解

今天来讲讲Android开发中水都绕不开的东西----drawable。最常使用的莫过于通过XML所声明的Drawable作为View背景&#xff0c;通过代码创建的应用场景则较少。其有着使用简单&#xff0c;比自定义view的成本要低的特点。同时&#xff0c;非图片类型的drawable占用空间较小&#…

【项目日记(九)】项目整体测试,优化以及缺陷分析

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:项目日记-高并发内存池⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你做项目   &#x1f51d;&#x1f51d; 开发环境: Visual Studio 2022 项目日…

Linux|centos7下的编译|ffmpeg的二进制安装

Windows版本的ffmpeg&#xff1a; ###注意&#xff0c;高版本可能必须要windows10以及以上才支持&#xff0c;win7估计是用不了的 下载地址&#xff1a;Builds - CODEX FFMPEG gyan.dev 或者这个下载地址&#xff1a;https://github.com/BtbN/FFmpeg-Builds/releases 这两个…

如何升级至ChatGPT Plus:快速指南,ChatGPT的秘密武器GPT4.0是什么?

提到 ChatGPT。想必大家都有所耳闻。自从 2022 年上线以来&#xff0c;就受到国内外狂热的追捧和青睐&#xff0c;上线2个月&#xff0c;月活突破1个亿&#xff01;&#xff01;&#xff01; 而且还在持续上涨中。因为有很多人都在使用 ChatGPT 。无论是各大头条、抖音等 App、…

嵌入式Qt 第一个Qt项目

一.创建Qt项目 打开Qt Creator 界面选择 New Project或者选择菜单栏 【文件】-【新建文件或项目】菜单项 弹出New Project对话框&#xff0c;选择Qt Widgets Application 选择【Choose】按钮&#xff0c;弹出如下对话框 设置项目名称和路径&#xff0c;按照向导进行下一步 选…

vue3 腾讯tdesign 后台管理框架的使用

1.介绍 TDesign 是具有包容性的设计体系&#xff0c;它强调为业务提供产品、服务等过程中&#xff0c;追求以人为本、人人受益的包容性&#xff0c;要求搭建过程中&#xff0c;了解业务底层&#xff0c;理解业务场景的多样性&#xff0c;并在繁杂的业务场景中寻找共性和特性&a…

论文阅读:GamutMLP A Lightweight MLP for Color Loss Recovery

这篇文章是关于色彩恢复的一项工作&#xff0c;发表在 CVPR2023&#xff0c;其中之一的作者是 Michael S. Brown&#xff0c;这个老师是加拿大 York 大学的&#xff0c;也是 ISP 领域的大牛&#xff0c;现在好像也在三星研究院担任兼职&#xff0c;这个老师做了很多这种类似的工…

unity2017 遇到visual studio 2017(社区版) 30日试用期到了

安装unity2017 遇到visual studio 2017 30日试用期到了&#xff0c;网上百度搜了好多方法都没有成功。 最后用了这个方法&#xff1a; 1)启动vs2017&#xff0c;在弹出要登录的窗口之前&#xff0c;迅速的点击工具-》选项-》账户&#xff0c;勾选在添加账户或对账户重新进行身…

Netty应用(九) 之 编解码器概念 Netty常见的编解码器

目录 22.编解码器 22.1 编解码的概念 22.2 netty中的编解码 22.3 序列化 23.编解码器在使用过程中的两部分核心内容 23.1 序列化协议&#xff08;编码格式&#xff09;&#xff08;传输数据的格式&#xff09; 23.1.1 Java默认的序列化与反序列化 23.1.2 XML的序列化与反…

LeetCode 0987.二叉树的垂序遍历:遍历时存节点信息,遍历完自定义排序

【LetMeFly】987.二叉树的垂序遍历&#xff1a;遍历时存节点信息&#xff0c;遍历完自定义排序 力扣题目链接&#xff1a;https://leetcode.cn/problems/vertical-order-traversal-of-a-binary-tree/ 给你二叉树的根结点 root &#xff0c;请你设计算法计算二叉树的 垂序遍历…

Java语法学习反射

Java语法学习反射 大纲 基本介绍class的介绍 具体案例 1. 基本介绍 流程图&#xff08;程序在计算机的阶段&#xff09; 反射的主要的类 这个提高效率不大 2. class的介绍 对于第三点&#xff1a;首先类只会加载一次&#xff0c;得到的class的对象&#xff0c;也只有一…

Python爬虫之Ajax数据爬取基本原理

前言 有时候我们在用 requests 抓取页面的时候&#xff0c;得到的结果可能和在浏览器中看到的不一样&#xff1a;在浏览器中可以看到正常显示的页面数据&#xff0c;但是使用 requests 得到的结果并没有。这是因为 requests 获取的都是原始的 HTML 文档&#xff0c;而浏览器中…

【Spring原理进阶】SpringMVC调用链+JSP模板应用讲解

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《Spring 狂野之旅&#xff1a;底层原理高级进阶》 &#x1f680…

Apache 神禹(shenyu)源码阅读(一)——Admin向Gateway的数据同步(Admin端)

源码版本&#xff1a;2.6.1 单机源码启动项目 启动教程&#xff1a;社区新人开发者启动及开发防踩坑指南 源码阅读 前言 开了个新坑&#xff0c;也是第一次阅读大型项目源码&#xff0c;写文章记录。 在写文章前&#xff0c;已经跑了 Divide 插件体验了一下&#xff08;体…