从基础到高级:Linux用户与用户组权限设置详解

目录

博客前言: 

一.简介

1.用户的定义

用户账户分类

2.用户组的定义

二.用户的相关linux语法

1.创建用户(useradd)

2.删除用户(userdel)

3.修改用户(usermod)

4.修改用户密码

5.su切换账号

6.退出登录

三.用户组

1.增加用户组(groupadd)

2.删除用户组(groupdel)

3.修改用户组(gruopmod)

4切换用户组(newgrp)

四.其他命令

1.cat  /etc/passwd

2.cat  /etc/shadow

3.cat  /etc/group

 


博客前言: 

在深入探索Linux操作系统的过程中,用户与用户组管理是一个不可或缺的部分。它们构成了Linux系统权限控制的基础,决定了哪些用户能够访问哪些资源,以及他们可以对这些资源执行哪些操作。

在这篇博客中,我们将带领读者一起走进Linux的用户与用户组世界,从基本概念讲起,逐步深入到权限设置、用户管理命令等实际操作。无论你是Linux新手,还是有一定经验的系统管理员,相信都能从中收获不少。

通过本文,你将学习到:

  • Linux用户与用户组的基本概念
  • 如何创建、修改和删除用户与用户组
  • 如何设置和管理用户权限
  • 常见的用户与用户组管理命令和工具
  • 用户与用户组管理在系统安全中的作用

让我们开始这段Linux用户与用户组管理的探索之旅吧!希望本文能为你提供有价值的参考和指导,帮助你在Linux的道路上走得更远。

一.简介

1.用户的定义

在Linux系统中,用户(User)是系统使用者的身份,也是系统最底层安全机制的一部分。每个用户在系统中都以字符和文件的形式存在,并拥有特定的权限,这些权限决定了他们可以访问哪些资源以及可以对这些资源执行哪些操作。

用户账户分类

  1. 超级用户(root):这是Linux系统中拥有最高权限的用户,其UID(用户ID)为0。只有在进行系统维护(例如建立用户等)或其他必要情形下才会使用超级用户登录,以避免系统出现安全问题。
  2. 系统用户(伪用户):这些用户是Linux系统正常工作所必需的,主要用于满足相应的系统进程对文件属主的要求。例如,bin、daemon、adm、lp等用户都属于系统用户,它们不能用来登录系统。
  3. 普通用户:这是为了让使用者能够使用Linux系统资源而建立的用户,我们的大多数用户属于此类。普通用户的使用系统权限受限,其UID为1000以后。

2.用户组的定义

在Linux系统中,用户组(Group)是具有相同特征用户的逻辑集合,这些用户共享一定的权限。用户组的概念主要是为了方便系统管理和控制用户的访问权限。

具体来说,用户组可以包含多个用户,这些用户可以被赋予一些共同的权限,例如对某个文件或目录的读写权限。通过将这些用户加入到一个组中,可以简化权限管理,避免为每个用户单独设置权限的复杂性。

在Linux中,用户和用户组的信息通常存储在/etc/passwd/etc/group文件中。/etc/passwd文件保存了系统中所有用户的基本信息,如用户名、用户ID(UID)、主目录、默认shell等。而/etc/group文件则保存了系统中所有用户组的信息,如组名、组ID(GID)、组成员等

用户组可以分为多种类型,包括普通用户组、系统组和私有组(也称基本组)。普通用户组可以包含多个用户,而系统组通常包含一些系统用户,用于满足系统进程对文件属主的要求。私有组则是在创建用户时,如果没有为其指明所属组,系统就会为其定义的一个与用户同名的用户组。

总之,在Linux系统中,用户和用户组构成了系统权限控制的基础。通过合理的用户和用户组管理,可以确保系统的安全性和稳定性,同时也可以方便地进行资源的访问和控制。

二.用户的相关linux语法

1.创建用户(useradd)

1.添加新的用户账号
useradd选项用户名
参数说明
选项
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
- G 用户组指定用户所属的附加组
-s Shell文件指定用户的登录Shell
- u 用户号指定用户的用户号,如果同时有-选项,则可以重复使用其他用户的标识
号。
用户名
指定新账号的登录名示例1:
useradd -d
home/sam
-m sam2
此命令创建了一个用户san ,其中-d和-m选项用来为登录名sam2产生一个主目录
/home/sam (/home为默认的用户主目录所在的父目录)
示例2:此命令新建了一个用户gem,该用户的登录Shell是bin/sh,它属于group用户组,同
useradd-s/bin/ sh-g group -G adm, root gem
其中group用户组是其主组。这里可能新建组:#groupadd group及groupadd atn
时又属于adm和root用户组
同时更新其他系统文件如/etc/shadow,
注1:增加用户账号就是在/etc/passwud文件中为新用户增加一条记录
etc/grou等。
注2:Linx提供了集成的系统管理工具usercorf,它可以用来对用户账号进行统一管理

2.删除用户(userdel)

删除帐号
如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要
将/etc/passwd等系统文件中的该用户记录删除
必要时还删除用户的主目录常用的选项是-r,它的作用是把用户的主目录一起删除
userdel选项用户名
示例1:
userdel-r sam
此命用在系经文件中(主要是/etc/passd,/ect/shadow/,/ect/group)等等记录,同时删除用户的主目录

3.修改用户(usermod)

删除帐号
如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要
将/etc/passwd等系统文件中的该用户记录删除
必要时还删除用户的主目录常用的选项是-r,它的作用是把用户的主目录一起删除
userdel选项用户名
示例1:
userdel-r sam
此命用在系经文件中(主要是/etc/passd,/ect/shadow/,/ect/group)等等记录,同时删除用户的主目录

4.修改用户密码

在Linux系统中,passwd是一个用于设置或更改用户密码的命令。它是Linux/Unix系统下的一个标准命令,用于管理用户的密码。

passwd命令的主要功能包括:

  1. 更改用户密码:使用passwd命令,用户可以更改自己的密码。例如,输入passwd并按回车键后,系统会提示用户输入当前密码和新密码。
  2. 设置密码策略passwd命令还可以用于设置密码策略,例如密码的最小长度、密码的复杂性要求等。这些策略可以通过配置文件或命令行参数来设置。
  3. 管理用户密码:系统管理员可以使用passwd命令来管理系统中所有用户的密码。例如,他们可以为用户设置密码、更改密码或锁定用户账户等。

需要注意的是,passwd命令只能由具有足够权限的用户(通常是系统管理员或用户自己)执行。普通用户只能更改自己的密码,而系统管理员则可以更改任何用户的密码。

此外,passwd命令还提供了一些选项和参数,以便用户和系统管理员可以根据需要进行更灵活的操作。例如,-l选项可以用于锁定用户账户,-u选项可以用于解锁用户账户,-d选项可以用于删除用户密码等。

总之,passwd命令是Linux系统中一个非常重要的命令,它为用户和系统管理员提供了方便、灵活的方式来管理用户的密码和账户安全。

5.su切换账号

su [options] [username]

这里的 [options] 是可选的参数,而 [username] 是要切换到的用户的用户名。如果不指定用户名,su 默认尝试切换到超级用户(root)。

以下是一些常用的 su 命令选项:

  • ---login:这个选项告诉 su 命令加载目标用户的登录环境。这通常包括设置环境变量、工作目录、shell 等。如果不使用此选项,su 仅会提供目标用户的权限,但不会加载完整的登录环境。

  • -c--command=COMMAND:这个选项允许你传递一个命令给 su,并在执行完该命令后退出目标用户的会话,不进入交互模式。

  • -s--shell=SHELL:这个选项允许你指定一个特定的 shell 来执行,而不是使用目标用户的默认 shell。

  • -m--preserve-environment:这个选项会保持当前的环境变量,而不是仅加载目标用户的环境变量。

  • -f--fast:这个选项用于 cshtcsh shell,表示不读取启动文件。

  • --help:显示帮助信息。

  • --version:显示 su 命令的版本信息。

下面是一些使用 su 命令的示例:

  1. su

    su -

    (使用 - 选项加载 root 用户的登录环境)

  2. su john -c "ls -l /home/john"
  3. su -s /bin/bash john
  4. 保持当前环境变量并切换到用户:

    su -m john

请注意,使用 su 命令时,通常需要输入目标用户的密码,除非当前用户是 root 用户。由于 su 命令允许用户切换到其他用户并执行命令,因此在使用时应格外小心,以确保不会意外地破坏系统安全或执行不适当的命令。

6.退出登录

在Linux中,有几种方法可以退出当前用户账户:

  1. exit命令
    这是最常用的方法。只需在命令行界面输入exit,然后按下回车键即可退出当前用户。exit命令会立即退出当前用户,并返回到上一级用户或登录界面。

    exit
  2. logout

    注意:在某些情况下,logoutexit命令可能具有相同的效果,特别是在shell提示符下使用时。

  3. Ctrl+D
    在大多数shell中,按下Ctrl+D组合键也可以退出当前用户的登录会话。这通常与logout命令有相同的效果。

  4. pkill -u username

    这将终止该用户的所有进程并注销该用户。

  5. 重启或关闭系统
    当然,如果你想要重启或关闭整个系统,你可以使用rebootshutdown命令。但请注意,这将影响所有用户和系统服务。

    reboot # 重启系统
    shutdown -h now # 关闭系统

请确保在退出用户或执行可能影响其他用户的操作时,你了解这些操作的后果,并且拥有适当的权限。如果你是系统管理员,你可能需要谨慎操作,以免对系统或其他用户造成不必要的中断或问题。

三.用户组

1.增加用户组(groupadd)

增加一个用户组
groupadd选项用户组
选项有:
-g GID指定新用户组的组标识号(GD)
#一般与-选项同时使用,表示新用户组的GD可以与系统已有用户组的GID相同。
示例1:
groupadd group1
此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的
基础上加1。
示例2:
groupadd -g 101 group2
此命令向系统中增加了一个新组group2同时指定新组的组标识号是101。

2.删除用户组(groupdel)

如果删除以及以及存在的用户组,使用 groupdel命令

groupdel  用户组

实例:

groupdel  group1

3.修改用户组(gruopmod)

修改用户组的属性
groupmod选项用户组
常用的选项有:
-g GID为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组将用户组的名字改为新名字
示例1:
groupmod -g 102 group2
此命令将组group2的组标识号修改为102
示例2:
groupmod -g 10000-n group3 group2
此命令将组group2的标识号改为10000,组名修改为group3

4切换用户组(newgrp)

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换
用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户
示例1:
newgrp root
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或
加组

四.其他命令

1.cat  /etc/passwd

您提供的是Linux系统中`/etc/passwd`文件的一部分内容。`/etc/passwd`文件存储了系统上所有用户账户的信息。每一行代表一个用户账户,并由冒号`:`分隔的七个字段组成。下面是对您提供的每一行内容的详细分析:

### root账户


```bash
root:x:0:0:root:/root:/bin/bash
```
* `root`: 用户名。
* `x`: 密码字段。这里的`x`表示密码是加密的,并且实际的加密密码存储在`/etc/shadow`文件中。
* `0`: 用户ID(UID)。对于`root`用户,UID通常是0。
* `0`: 组ID(GID)。`root`用户的默认组也是`root`,其GID也是0。
* `root`: 用户全名或描述。
* `/root`: 用户的主目录。
* `/bin/bash`: 用户的默认shell。

### 系统账户

接下来的账户(如`bin`, `daemon`, `adm`, `lp`, `sync`, `shutdown`, `halt`等)都是系统账户,用于运行系统服务。这些账户通常没有登录shell(如`/sbin/nologin`或`/bin/sync`),并且通常具有较低的UID和GID。

### 普通用户账户

* `mail`: 邮件服务的用户账户。
* `operator`: 通常用于系统管理的用户账户。
* `games`: 用于运行游戏的用户账户。
* `ftp`: FTP服务的用户账户。
* `nobody`: 一个无特权的用户,通常用于运行不需要访问权限的服务。
* `systemd-network`: 用于`systemd`网络管理的用户账户。
* `dbus`: 用于`DBus`系统消息总线的用户账户。
* `polkitd`: 用于`polkit`权限管理的用户账户。
* `postfix`: 用于`Postfix`邮件传输代理的用户账户。
* `sshd`: 用于`SSH`服务的用户账户。
* `chrony`: 用于`chrony`时间同步服务的用户账户。
* `ntp`: 用于`NTP`(网络时间协议)服务的用户账户。
* `www`: 用于Web服务器的用户账户。
* `mysql`: 用于MySQL数据库的用户账户。
* `redis`: 用于Redis数据库的用户账户。

每个用户账户的信息都包括:

* 用户名。
* 密码字段(通常是`x`,表示加密密码在`/etc/shadow`中)。
* UID。
* GID。
* 用户全名或描述。
* 用户主目录。
* 用户默认shell。

对于系统账户,主目录通常是一个系统目录,而shell通常是`/sbin/nologin`或`/bin/sync`等,表示这些账户不能用于登录。对于普通用户账户,主目录通常位于`/home/`下,shell通常是`/bin/bash`或其他shell。

请注意,`/etc/passwd`文件只包含用户的基本信息,而实际的加密密码存储在`/etc/shadow`文件中,并且只有root用户可以访问。这是出于安全考虑,以防止未经授权的用户访问加密密码。

2.cat  /etc/shadow

这是Linux系统中`/etc/shadow`文件的一部分内容,该文件存储了系统上所有用户账户的加密密码和相关的账户属性。每一行代表一个用户账户,由冒号`:`分隔的九个字段组成。下面是对您提供的每一行内容的详细分析:

### root账户

```bash
root:$6$sr9HC.OUoY/QlPJI$9Cz.iTRt0wmgWHDC4XxucePa0sblPJHcNsR8isArXdPPW8WMfHdPOhDTwdOoXAbwrm4/t1WEkboZsgDxJ16gr/::0:99999:7:::
```

- `root`: 用户名。
- `$6$sr9HC.OUoY/QlPJI$9Cz.iTRt0wmgWHDC4XxucePa0sblPJHcNsR8isArXdPPW8WMfHdPOhDTwdOoXAbwrm4/t1WEkboZsgDxJ16gr/`: 加密的密码。这里使用的是SHA-512加密的密码,`$6$`表示使用的是SHA-512算法,`sr9HC.OUoY/QlPJI`是盐值(salt),后面的部分是加密后的密码。
- `::`: 账户最后一次修改密码的日期,这里为空表示从未修改过。
- `0`: 密码的最小有效期,这里是0天,表示密码可以随时更改。
- `99999`: 密码的最大有效期,这里是99999天,表示密码永远不会过期。
- `7`: 密码过期前的警告天数,这里是7天。
- `::`: 密码过期后的宽限天数,这里为空表示没有宽限。
- `::`: 账户失效日期,这里为空表示账户永远不会失效。
- `::`: 保留字段,通常用于存储账户保留信息,这里为空。

### 系统账户和普通用户账户

对于`bin`, `daemon`, `adm`, `lp`, `sync`, `shutdown`, `halt`, `mail`, `operator`, `games`, `ftp`, `nobody`等系统账户,以及`systemd-network`, `dbus`, `polkitd`, `postfix`, `sshd`, `chrony`, `ntp`, `www`, `mysql`, `redis`等普通用户账户,它们的密码字段通常以`*`或`!!`开头,表示这些账户没有密码或者密码被锁定。

- `*`: 表示账户没有密码,通常用于系统账户或那些不需要登录的账户。
- `!!`: 表示账户密码被锁定,即使账户有密码也不能登录。

接下来的字段(如UID、GID、密码有效期、警告天数等)通常是默认值或系统配置的值,具体取决于系统管理员的设置。

### 注意点

- `/etc/shadow`文件只能由root用户访问和修改,以保护加密密码的安全性。
- 加密密码使用不同的加密算法和盐值来增强安全性。
- 某些字段为空(如`::`),表示相应的设置没有特定的值,使用系统默认值。

通过配置`/etc/shadow`文件,系统管理员可以控制用户账户的密码策略、有效期、失效日期等安全相关的设置。

3.cat  /etc/group

 

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

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

相关文章

计算机概论

计算机概论 1.CPU,负责大量运算2.内存3.操作系统 1.CPU,负责大量运算 1、频率是CPU 每秒可以进行的工作次数,如 3.0 GHz 的 CPU 每秒可以进行 3*10 的 9 次方次,各个组件通过南桥与北桥连接至 CPU 2、CPU 外频与倍频 外频&…

智慧城市的新宠儿:会“思考”的井盖

在城市化飞速发展的今天,我们或许未曾过多地关注那些平凡却至关重要的井盖。它们无声地矗立在城市的每个角落,守护着深藏于地下的城市生命线,然而,这些井盖并未满足于传统的角色,它们正逐步融入智慧城市的宏大画卷中&a…

android PopWindow弹不出输入法和遮挡输入框的问题

背景,在popWindow弹输入法,注意两个地方, 当前版本号pop要获取焦点 兼容版本号 弹出软键盘 private fun showSoftInput() {if (Build.VERSION.SDK_INT > 30) {"版本大于等 30".log()binding.etNewUser.windowInsetsControll…

Python程序员面试准备:八股文题目与解答思路

目录 描述一下Python中的列表推导式(List Comprehension)及其用法。 代码示例: 解答思路: 解释一下Python中的装饰器(Decorator)及其作用。 代码示例: 输出: 解答思路: 谈谈Python中的GIL(Global Interprete…

四步玩转数字名片-- 推贴,让你的名片飞起来

四步玩转数字名片-- 推贴,让你的名片飞起来 名片设计路径: 1-进入编辑查看名片→点击【创建名片:完善名片信息】 2-进入编辑界面→编辑个人业务,公司组织业务 3-创建多种业务名片。 头像即第一印象; 好照片让客户的关…

Gitee教程2(完整流程)

1.配置git git config --global user.name "用户名" git config --global user.email "密码" 如何获取? gitee右上角加号点击新建仓库,仓库名随便起一个就行 找到这条命令,把这两句一个一个复制到vscode终端就行 2.创建g…

网络基础与通信原理:构建数字世界的框架

目录 初识计算机网络 网络介绍 按照拓扑分类 按地域分类 网络设备 交换机(switch) 路由器(router) 传输介质 双绞线 光纤 光纤速度 ISO ISO和OSI有什么关系呢? OSI七层模型 TCP/IP四层 TCP/IP协议族 …

VMware ESXi 8.0的安装、配置、使用

VMware ESXi 8.0的安装、配置、使用 ESXi的安装与配置下载镜像安装网络配置 Web控制台的管理操作激活开启直通网络配置修改电源模式创建虚拟机 其他ESXI秘钥克隆虚拟机 ESXi的安装与配置 下载镜像 官网:https://www.vmware.com/ 文档:https://docs.vm…

提示词工程简单介绍

提示词工程,又称为Prompt Engineering,是自然语言处理(NLP)领域中的一个重要概念,特别是在与语言模型(如ChatGPT)交互时。它涉及使用精心设计的提示词或指令来引导模型生成特定类型的响应。 …

R语言【raster】——raster():创建一个RasterLayer对象

Package raster version 3.6-27 Description 创建RasterLayer对象的方法。RasterLayer对象可以从无到有,一个文件,一个范围对象,一个矩阵,一个“图像”对象,或者从Raster*, Spatial*, im (spat…

LeetCode--代码详解 59. 螺旋矩阵 II

59. 螺旋矩阵 II 题目 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2: 输入&a…

【Python】 剪辑法欠采样 CNN压缩近邻法欠采样

借鉴:关于K近邻(KNN),看这一篇就够了!算法原理,kd树,球树,KNN解决样本不平衡,剪辑法,压缩近邻法 - 知乎 但是不要看他里面的代码,因为作者把代码…

深入探索STM32的存储选项:片内RAM、片内Flash与SDRAM

博客:深入探索STM32的存储选项:片内RAM、片内Flash与SDRAM 在嵌入式系统设计中,存储管理是一个至关重要的方面,尤其是对于基于STM32这类强大的微控制器来说。STM32系列微控制器因其高性能、低功耗以及灵活的存储选项而广受欢迎。本…

RabbitMQ集群架构

1.RabbitMQ集群模式介绍 普通集群 默认的集群模式,比如有节点node1、node2和node3,三个节点是普通集群,但是他们仅有相同的元数据,即交换机、队列的结构消息只存在其中的一个节点里面,假如消息A存储在node1节点&#x…

jquery将网页html文档导出为pdf图片

jquery将网页html文档导出为pdf图片 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&q…

leetcode经典题库(简单)

文章目录 1.两数之和2.反转链表3.合并两个有序列表4.合并两个有序链表5.删除有序数组中的重复项6.从数组中移除元素7. 搜索指定数值在数组中的插入位置8. 数组最后一位加一9. 合并两个有序数组在leetcode上刷了几个和数组相关的简单题,记录在这里。 1.两数之和 给定一个整数…

Qt多线程调用python并接收调用数据

功能: qt中用多线程的方式调用python脚本,完成C++和python之间的数据交互。为了满足多任务并发的要求,将调用python的逻辑部分封装到QThread的子类PyApiThread中。 主要实现: 包括PyApiThread的实现以及在主线程中如何使用 PyApiThread的的实现,分.h和.cpp两个文件 #ifnd…

Python中HTTP请求的安全性考虑与实践:安全帽下的网络舞者

在Python的HTTP请求世界里&#xff0c;安全性就像是一个必不可少的舞伴&#xff0c;时刻陪伴着你的网络舞步。想象一下&#xff0c;你正在举办一场网络舞会&#xff0c;而安全性则是那个穿着防弹舞衣&#xff0c;戴着安全帽的忠诚舞伴&#xff0c;确保你在舞池中尽情舞动而不必…

JAVA面试题21

Java中的四个访问修饰符&#xff08;access modifiers&#xff09;是什么&#xff1f;它们的区别是什么&#xff1f; 答案&#xff1a;Java中的四个访问修饰符是public、private、protected和默认&#xff08;即不使用修饰符&#xff09;。它们的区别在于它们允许的访问级别不同…

百度百科词条创建机构有哪些?

百度百科&#xff0c;作为一个权威的知识分享平台&#xff0c;拥有着极高的权重和流量。在这个平台上&#xff0c;词条的创建和维护显得尤为重要&#xff0c;它直接关系到一个人或企业的形象和品牌的塑造。因此&#xff0c;百度百科词条的创建和维护逐渐成为了一个专业化的服务…