轻松搞懂Linux中的用户管理

2023-10-27

在这里插入图片描述

概念

用户管理是Linux系统管理员必须掌握的重要技能之一。Linux系统是一个多用户操作系统,可以支持多个用户同时使用,每个用户拥有自己的账户和权限,因此管理员需要了解如何创建、管理和删除用户账户,并设置用户权限以及如何为用户分配组和角色等。在本篇博客中,我将详细讨论Linux用户管理的各个方面,以及常见的用户管理工具和技巧,帮助读者掌握Linux用户知识。

用户账户

用户账户是Linux系统中的基本概念,每个用户都有一个唯一的账户名和密码,用于登录系统并执行各种操作。管理员可以创建、修改和删除用户账户,以及配置用户的权限和属性。

  1. 创建用户账户

在Linux系统中,可以使用useradd命令来创建用户账户。语法如下:

useradd [选项] 用户名

例如,要创建一个名为bob的用户,可以使用以下命令:

useradd bob

执行该命令后,系统会自动为bob用户创建一个主目录/home/bob,并分配一个默认的shell/bin/bash。如果需要指定其他的shell或目录,可以使用以下选项

  • -m:自动创建用户的主目录
  • -s shell:指定用户的默认shell。
  • -c:设置用户的注释信息。
  • -d:指定用户的主目录。
  • -g:指定用户所属的主组。

例如,以下命令将创建一个名为“john”的新用户,并将其主目录设置为“/home/john”,默认Shell设置为“/bin/bash”:

useradd -d /home/john -s /bin/bash john
  1. 修改用户账户

管理员可以使用usermod命令修改现有的用户账户。例如,要将bob用户的默认shell修改为/bin/zsh,可以使用以下命令:

usermod -s /bin/zsh bob

还可以使用usermod命令修改用户的UID、GID、主目录和登录名等属性。例如,要将alice用户的UID修改为1001,可以使用以下命令:

usermod -u 1001 alice
  1. 删除用户账户

在不需要某个用户账户时,可以使用userdel命令将其删除。例如,要删除bob用户的账户和主目录,可以使用以下命令:

userdel -r bob

其中,-r选项表示同时删除用户主目录。

  1. 修改用户密码

在Linux系统中,可以使用passwd命令来修改用户的密码。以下是修改用户密码的基本命令:

passwd 用户名

在执行上述命令时,系统会提示您输入新密码。请注意,在Linux系统中,密码不会在命令行中显示。

  1. 切换用户

在Linux系统中,可以使用su命令来切换用户。以下是切换用户的基本命令:

su 用户名

在执行上述命令时,系统会提示您输入目标用户的密码。当高权限用户切换低权限用户时,不需要输入密码

用户组

用户组是一组相关用户的集合,它们共享相同的权限和属性。在Linux系统中,每个用户都必须属于至少一个用户组。管理员可以创建、修改和删除用户组,以及将用户添加到不同的组中。

  1. 创建用户组

在Linux系统中,可以使用groupadd命令来创建用户组。例如,要创建一个名为dev的用户组,可以使用以下命令:

groupadd dev
  1. 修改用户组

管理员可以使用groupmod命令修改现有的用户组。例如,要将dev用户组的GID修改为1001,可以使用以下命令:

groupmod -g 1001 dev

还可以使用groupmod命令修改用户组的名称。例如,要将dev用户组的名称修改为developers,可以使用以下命令:

groupmod -n developers dev
  1. 删除用户组

在不需要某个用户组时,可以使用groupdel命令将其删除。例如,要删除developers用户组,可以使用以下命令:

groupdel developers #保留用户文件
groupdel -r developers #不保留用户文件

用户权限

Linux系统中的文件和目录都有一些权限属性,包括读、写、执行等。用户可以通过权限属性来控制对文件和目录的访问和操作。管理员可以通过用户权限来控制用户的访问和操作范围。

  1. 文件和目录权限

Linux系统中,每个文件和目录都有一个所有者和一个所属用户组。所有者和用户组可以分别设置读、写和执行权限。管理员可以使用chmod命令来修改文件和目录的权限属性。

在Linux系统中,每个文件或目录都有三种不同类型的访问权限,分别是读取(r)、写入(w)和执行(x)。这些权限是分配给三个不同的用户组,包括文件所有者、文件所属组和其他用户。

chmod命令的语法格式如下:

chmod [who][operator][permission] file

其中,who代表要设置权限的用户组,operator表示要执行的操作,permission表示要设置的权限。

who的取值包括:

  • u:表示文件所有者
  • g:表示文件所属组
  • o:表示其他用户
  • a:表示所有用户(等价于ugo)

operator的取值包括:

  • +:表示添加权限
  • -:表示删除权限
  • =:表示设置权限为指定值

permission的取值包括:

  • r:表示读取权限
  • w:表示写入权限
  • x:表示执行权限
  • s:表示设置SUID或SGID位
  • t:表示设置粘着位

例如,要将文件test.txt的所有者的写权限关闭,可以使用以下命令:

chmod u-w test.txt

chmod命令也可以使用数字修改文件权限

r --> 4
w --> 2
x --> 1

拿 rwxrw-r-x 来说,所有者、所属组和其他人分别对应的权限值为:
所有者 = rwx = 4+2+1 = 7
所属组 = rw- = 4+2 = 6
其他人 = r-x = 4+1 = 5
所以,此权限对应的权限值就是 765。

例如:打开file.txt文件的所有权

chmod 777 file.txt
  1. sudo权限

在Linux系统中,管理员可以通过sudo命令将某个普通用户提升为管理员用户,以便其执行需要管理员权限的操作。管理员可以使用visudo命令编辑sudo配置文件/etc/sudoers,以控制用户的sudo权限。例如,以下行允许用户bob以管理员身份执行所有命令:

bob ALL=(ALL) ALL

其中,第一个bob表示用户账户,第二个ALL表示可以在任何主机上执行,(ALL)表示可以作为任何用户执行,第三个ALL表示可以执行任何命令。

用户管理工具

Linux系统中,有许多命令行工具和图形化工具可以帮助管理员进行用户管理。以下是一些常用的用户管理工具。

  1. useradd
    useradd命令用于创建用户账户。管理员可以使用各种选项来指定用户的属性和权限。

  2. usermod
    usermod命令用于修改现有的用户账户。管理员可以使用各种选项来修改用户的属性和权限。

  3. userdel
    userdel命令用于删除用户账户。管理员可以使用-r选项来同时删除用户主目录。

  4. groupadd
    groupadd命令用于创建用户组。管理员可以使用各种选项来指定用户组的属性和权限。

  5. groupmod
    groupmod命令用于修改现有的用户组。管理员可以使用各种选项来修改用户组的属性和权限。

  6. groupdel
    groupdel命令用于删除用户组。

  7. visudo
    visudo命令用于编辑sudo配置文件/etc/sudoers,以控制用户的sudo权限。

  8. GNOME 用户和组
    除了命令行工具外,还有一些图形化工具可以帮助管理员进行用户管理。GNOME 用户和组是一个在 GNOME 桌面环境下使用的用户管理工具,可以帮助管理员轻松管理用户和用户组。

    要打开 GNOME 用户和组,可以按下Alt+F2快捷键打开运行对话框,然后输入gnome-system-tools并按回车键。在打开的“用户和组”窗口中,可以添加、修改和删除用户和用户组。

  9. Webmin
    Webmin 是一个基于 web 的管理界面,可以让管理员通过 web 浏览器管理 Linux 系统。Webmin 提供了许多模块,包括用户和组模块,可以帮助管理员进行用户管理。

总的来说,Linux 用户管理是非常重要的,管理员可以通过用户管理来控制用户的访问和操作范围,以保证系统的安全性和稳定性。在本文中,我们介绍了 Linux 用户管理的基础知识,包括用户账户的创建、删除和修改,以及用户组的创建、删除和修改。我们还介绍了一些图形化工具,包括 GNOME 用户和组和Webmin,可以帮助管理员更方便地进行用户管理。

同时,我们还提到了一些注意事项,如不要将 root 用户授权给其他用户、使用强密码等。这些注意事项可以帮助管理员确保系统的安全性。希望这篇文章对初学者和有经验的管理员都有所帮助。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

轻松搞懂Linux中的用户管理 的相关文章

  • 安装J语言的JQt IDE,出现错误

    我一直按照这里的说明进行操作 http code jsoftware com wiki System Installation Linux http code jsoftware com wiki System Installation L
  • 在 Linux 上使用多处理时,TKinter 窗口不会出现

    我想生成另一个进程来异步显示错误消息 同时应用程序的其余部分继续 我正在使用multiprocessingPython 2 6 中的模块来创建进程 我试图用以下命令显示窗口TKinter 这段代码在Windows上运行良好 但在Linux上
  • iptables通过注释删除特定规则

    我需要删除一些具有相同评论的规则 例如 我有带有 comment test it 的规则 所以我可以像这样获得它们的列表 sudo iptables t nat L grep test it 但是我怎样才能删除所有带有注释 测试它 的 PR
  • SSE:跨页边界的未对齐加载和存储

    我在页面边界旁边执行未对齐加载或存储之前读过某处 例如使用 mm loadu si128 mm storeu si128内在函数 代码应首先检查整个向量 在本例中为 16 个字节 是否属于同一页 如果不属于同一页 则切换到非向量指令 我知道
  • docker容器大小远大于实际大小

    我正在尝试从中构建图像debian latest 构建后 报告的图像虚拟大小来自docker images命令为 1 917 GB 我登录查看尺寸 du sh 大小为 573 MB 我很确定这么大的尺寸通常是不可能的 这里发生了什么 如何获
  • 查找哪些页面不再与写入时复制共享

    假设我在 Linux 中有一个进程 我从中fork 另一个相同的过程 后forking 因为原始进程将开始写入内存 Linux写时复制机制将为进程提供与分叉进程使用的不同的唯一物理内存页 在执行的某个时刻 我如何知道原始进程的哪些页面已被写
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 是否可以创建一个脚本来保存和恢复权限?

    我正在使用 Linux 系统 需要对一组嵌套文件和目录进行一些权限实验 我想知道是否没有某种方法可以保存文件和目录的权限 而不保存文件本身 换句话说 我想保存权限 编辑一些文件 调整一些权限 然后将权限恢复到目录结构中 将更改的文件保留在适
  • Linux - 从第二个选项卡获取文本

    假设我们有这样的文件 一些文本11 一些文本12 一些文本13 一些文本21 一些文本22 一些文本23 文本由制表符分隔 我们知道第 1 列中的一些文本 但希望从第 2 列中获取文本 我知道我可以通过以下方式获取线路 grep somet
  • waitpid() 的作用是什么?

    有什么用waitpid 它通常用于等待特定进程完成 或者如果您使用特殊标志则更改状态 基于其进程 ID 也称为pid 它还可用于等待一组子进程中的任何一个 无论是来自特定进程组的子进程还是当前进程的任何子进程 See here http l
  • Linux:如何设置进程的时区?

    我需要设置在 Linux 机器上启动的各个进程的时区 我尝试设置TZ变量 在本地上下文中 但它不起作用 有没有一种方法可以使用与系统日期不同的系统日期从命令行运行应用程序 这可能听起来很愚蠢 但我需要一种sandbox系统日期将被更改的地方
  • 子目录中的头文件(例如 gtk/gtk.h 与 gtk-2.0/gtk/gtk.h)

    我正在尝试使用 GTK 构建一个 hello world 其中包括以下行 include
  • 快速像素绘图库

    我的应用程序以每像素的方式生成 动画 因此我需要有效地绘制它们 我尝试过不同的策略 库 但结果并不令人满意 尤其是在更高分辨率的情况下 这是我尝试过的 SDL 好的 但是慢 OpenGL 像素操作效率低下 xlib 更好 但仍然太慢 svg
  • 如何构建任务“gems:install”

    我正在将 Rails 应用程序部署到 Linux 服务器 并且缺少一些 rake 任务 包括 rake gems install 和 rake db 我正在运行来自 GEM 的 Rails 2 3 4 为什么是这样 我该如何解决 我可以以某
  • 高效的内存屏障

    我有一个多线程应用程序 其中每个线程都有一个整数类型的变量 这些变量在程序执行期间递增 在代码中的某些点 线程将其计数变量与其他线程的计数变量进行比较 现在 我们知道在多核上运行的线程可能会无序执行 一个线程可能无法读取其他线程的预期计数器
  • 在 C++ linux 中将 STRINGS 写入串口

    我知道这个问题遍布互联网 但仍然没有任何东西能让我完全解决这个问题 我想用 C linux 将数据写入 Propeller 板的串行端口 从控制台获取输入时程序运行良好 但是当我向它写入字符串时总是返回 ERROR Invalid comm
  • PyQt5 - 无法使用 QVideoWidget 播放视频

    from PyQt5 QtWidgets import from PyQt5 QtMultimedia import from PyQt5 QtMultimediaWidgets import from PyQt5 QtCore impor
  • 如何允许应用程序声明“https”方案 URI? (即如何从 https URL 打开桌面应用程序?)

    目前我正在尝试为 OAuth 2 0 授权流程创建一个客户端 实际上是一个本机应用程序 并且在规范中就在这儿 https www rfc editor org rfc rfc8252 section 7 2据说有 3 种方法来处理重定向 U
  • 为什么C Clock()返回0

    我有这样的事情 clock t start end start clock something else end clock printf nClock cycles are d d n start end 我总是得到输出 时钟周期是 0
  • Python 脚本作为 Linux 服务/守护进程

    Hallo 我试图让 python 脚本作为服务 守护进程 在 ubuntu linux 上运行 网络上存在多种解决方案 例如 http pypi python org pypi python daemon http pypi python

随机推荐

  • 中国航天科技集团公司的各个研究院

    1 航天一院 中国运载火箭技术研究院 导弹运载火箭总体设计生产总装 2 航天四院 航天动力技术研究院 航天固体燃料发动机研制生产实验 3 航天五院 中国空间技术研究院 卫星 飞船 空间站 探月器等航天器研制生产 4 航天六院 航天推进技术研
  • el+vue 实战 ⑧ el-calendar日历组件设置点击事件、el-calendar日历组件设置高度、el-calendar日历组件自定义日历内部内容

    一 效果图 日历显示内容变为01 02的形式 点击相应的日期后 有一个弹出框显示当天完成的一些内容 二 前端代码设置
  • 切换到WSL2.0后无法连接到x-server Unable to init server: Could not connect: Connection refused无法显示窗口

    之前通过安装vcxsrv 64 1 20 9 0 installer exe 启动x launch服务器后 无法通过bash打开显示窗口 错误 Unable to init server Could not connect Connecti
  • 【Javascript】数据结构与算法-快速排序第一趟结果

    Javascript 数据结构与算法 快速排序第一趟结果 整体思想 案例一 案例二 快速排序代码实现 js 复杂度分析 整体思想 将待排序数组A以某一元素为基准划分为两个子数组left和right 如果基准元素为pivot那么left中的元
  • 山路 (ghat)--(最短路-最小生成树//超级原点)

    感谢光神送来rating38000分的思路 题目描述 会和神奈子一起改变地形 开凿地下洞穴等 虽说是一起 不过看起来改变土地是诹访子的工作 与其说她是直接将大地整平 不如说这是她麾下的崇神的功劳 求闻口授 山路交错相同 令人烦躁 于是诹访子
  • MWeb发布笔记到印象笔记,提示“Content of submitted note was malformed”

    文章目录 issue solution 参考 issue MWeb发布笔记到印象笔记 提示 Error Domain com evernote sdk Code 11 Content of submitted note was malfor
  • 解决m1芯片Mac安装node失败问题

    用nvm安装node时终端报错 type aesni cbc sha256 enc avx2 function deps openssl config archs linux x86 64 asm avx2 crypto aes aesni
  • C/C++笔试必须熟悉掌握的头文件系列(五)——iostream

    1 说明 iostream 的意思是输入输出流 直接点说就是in out stream 流 从字面就可以理解这个函数库所要操作的无非是从流中获取输入 向终端流中输出 iostream 库的基础是两种命名为 istream 和 ostream
  • 清除IEXPLORER.EXE病毒

    E枭雄 Trojan Nethief IExplorer 病毒档案 网络枭雄 病毒的一个新变种 值得关注 警惕程度 发作时间 随机 病毒类型 木马病毒 传播方式 网络 感染对象 网络 病毒介绍 此 病毒是网络枭雄病毒的一个新变种 可以在Wi
  • vue中如何引入jquery详解

    用vue cli脚手架工具构建项目成功后 当需要引入JQ 可用以下方法 1 首先在package json里的dependencies加入 jquery 3 2 1 2 在终端里输入npm install jquery save dev 当
  • Reid Strong Baseline 代码解析

    目录 1 设置自己的数据集 1 1使用作者提供的dataset格式 1 2新建dataset格式 2 测试时设置是否只采用跨相机的样本 3 训练 3 1 修改模型 3 1 1参数解读 3 1 2使用自己的模型 4测试 5本篇博客的不足 1
  • 基于Python+OpenCV的视频字符化(深度学习+机器视觉)含全部工程源码

    目录 前言 总体设计 系统整体结构图 系统流程图 运行环境 Python 环境 OpenCV环境 模块实现 1 视频读取及处理 2 色素块识别与替换 3 视频合成 4 操作系统上的实现 系统测试 工程源代码下载 其它资料下载 前言 本项目利
  • SQL - Navicat查看SQL执行计划

    我们在工作中肯定写过sql语句 也会进行一下sql语句的优化 在优化sql语句里看过相应的explain 在进行sql语句优化的时候 理解执行计划中各个参数的意思 弄明白执行的顺序 对sql优化有很大的帮助 1 通过 Explain 命令查
  • nestjs知识系列:使用postman测试websocket

    原文 Using WebSocket Requests Postman Learning Center websocket socket emit socket on等api详解 Using WebSocket Requests Postm
  • Linux Oracle使用常用命令

    ps ef grep oracle 查看Oracle启动的进程 常被用作查看Oracle服务是否已启动 登录Oracle sqlplus nolog conn as sysdba sqlplul as sysdba sqlplul as s
  • linux安装mysql8.0详解

    linux安装mysql8 0 一 安装前准备工作 二 安装mysql 三 配置mysql 一 安装前准备工作 1 卸载系统自带的mariadb root mesdb01 dbdata rpm qa grep mariadb mariadb
  • shell编程

    版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csdn net Leo1120178518 article details 100055607 She
  • MUI扫描功能的实现

    开发手机APP时经常需要用到扫描二维码 条码的功能 在使用MUI框架开发时 我们可以使用H5plus封装好的Barcode类 Barcode模块管理条码扫描 提供常见的条码 二维码及一维码 的扫描识别功能 可调用设备的摄像头对条码图片扫描进
  • 整合springBoot+SSM及框架说明

    目录 1 关于springBoot的说明 1 1 springBoot的定义 1 2 springBoot的作用 2 关于springMVC的说明 2 1 springMVC的作用 3 Spring的的作用 4 mybatis的作用 一 创
  • 轻松搞懂Linux中的用户管理

    文章目录 概念 用户账户 用户组 用户权限 用户管理工具 概念 用户管理是Linux系统管理员必须掌握的重要技能之一 Linux系统是一个多用户操作系统 可以支持多个用户同时使用 每个用户拥有自己的账户和权限 因此管理员需要了解如何创建 管