linux_用户与组

news2024/11/28 20:52:48

用户与组

基于账号的访问控制

账号类型:用户账号(UID) 、组账号(GID)

用户账号简介

作用: 1.可以登陆操作系统

2.不同的用户具备不同的权限

唯一标识:UID(编号从0开始的编号,默认最大60000)

  • 管理员root的UID:永远为0

  • 系统用户的UID: 1-999(系统内定,不轻易修改)

  • 普通用户的UID:默认从1000开始,60000结尾

#用户分为超级用户root、系统用户、普通用户。

组账号简介

作用: 方便管理用户

唯一标识:GID(编号从0开始的编号,默认最大60000)

原则:Linux一个用户必须至少属于一个组(基础组,不轻易修改该组的归属)

组账户的分类:

  • 基本组:一般情况与用户同名,一个用户必须有基本组,基本组只能有一个

  • 附加组(从属组): 一个用户可以有多个附加组,也可以没有附加组

账号的存放类别

账号数据的存放

--存储在本机磁盘中--本地账户

本地帐号的数据文件

  • /etc/passwd 存放用户的基本信息

  • /etc/shadow 保存密码字串/有效期等信息

  • /etc/group,保存组帐号的基本信息

  • /etc/gshadow,组管理信息文件

解析账号文件

/etc/passwd保存用户账户的基本信息

7个字段

  1. 用户账号的名称

  2. 密码字符或占位符

  3. 用户账户的UID号

  4. 所属基本组的GID号

  5. 用户全名

  6. 用户的家目录

  7. 登入shell程序的路径

用户管理

useradd 添加用户

-格式:useradd [选项]... 用户名

-b, --base-dir BASE_DIR  # 如果未指定 -d HOME_DIR,则系统的默认基本目录。如果未指定此选项,useradd 将使用 /etc/default/useradd 中的 HOME 变量指定的基本目录,或默认使用 /home。
-c, --comment COMMENT    # 加上备注文字。任何文本字符串。它通常是对登录名的简短描述,目前用作用户全名的字段。
-d, --home HOME_DIR      # 将使用 HOME_DIR 作为用户登录目录的值来创建新用户。 
-D, --defaults           # 变更预设值。
-e, --expiredate EXPIRE_DATE # 用户帐户将被禁用的日期。 日期以 YYYY-MM-DD 格式指定。
-f, --inactive INACTIVE      # 密码过期后到帐户被永久禁用的天数。
-g, --gid GROUP   # 用户初始登录组的组名或编号。组名必须存在。组号必须引用已经存在的组。
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]] # 用户也是其成员的补充组列表。每个组用逗号隔开,中间没有空格。
-h, --help # 显示帮助信息并退出。
-k, --skel SKEL_DIR # 骨架目录,其中包含要在用户的主目录中复制的文件和目录,当主目录由 useradd 创建时。
-K, --key KEY=VALUE # 覆盖 /etc/login.defs 默认值(UID_MIN、UID_MAX、UMASK、PASS_MAX_DAYS 等)。
-l, --no-log-init   # 不要将用户添加到 lastlog 和 faillog 数据库。
-m, --create-home   # 如果用户的主目录不存在,则创建它。
-M                  # 不要创建用户的主目录,即使 /etc/login.defs (CREATE_HOME) 中的系统范围设置设置为 yes。
-N, --no-user-group # 不要创建与用户同名的组,而是将用户添加到由 -g 选项或 /etc/default/useradd 中的 GROUP 变量指定的组中。
-o, --non-unique    # 允许创建具有重复(非唯一)UID 的用户帐户。 此选项仅在与 -o 选项结合使用时有效。
-p, --password PASSWORD # crypt(3) 返回的加密密码。 默认是禁用密码。
-r, --system        # 创建一个系统帐户。
-s, --shell SHELL   # 用户登录 shell 的名称。
-u, --uid UID       # 用户 ID 的数值。
-U, --user-group    # 创建一个与用户同名的组,并将用户添加到该组。
-Z, --selinux-user SEUSER # 用户登录的 SELinux 用户。 默认情况下将此字段留空,这会导致系统选择默认的 SELinux 用户。

# 更改默认值
# 当仅使用 -D 选项调用时,useradd 将显示当前默认值。 当使用 -D 和其他选项调用时,useradd 将更新指定选项的默认值。 有效的默认更改选项是:
useradd 执行进程
  1. 会在/etc/passwd增加一行信息

  2. 会在/etc/shadow增加一行信息

  3. 会在/home新增用户家目录

  4. 会在/var/spool/mail增加用户邮件文件

  5. 会在/etc/group增加一行组信息(基础组)

  6. 会在/etc/gshadow增加一行组的管理信息

useradd -u [1000-60000] [用户名]

#创建用户的时候指定用户id

useradd -d [家目录] [用户名]

#创建用户的时候指定用户家目录

#linux在创建用户的时候,如果家目录/路径提前创建或者家目录的父目录不存在,在/etc/passwd上会记录路径,但是实际上该用户没有家。

---因为/opt/prefile存在,给student03指定家目录时会报错---

【注意】实际上/etc/passwd会将错误的信息写入

useradd -G [附加组名] [用户名]

#创建用户的时候指定加入附加组(-g 是指定基本组但不常用,不轻易修改基本组)

#创建账户的时候,可以把用户加入多个附加组

useradd -s [解释器] [用户名]

#创建用户的时候,指定用户的登入解释器

-s #指的是shell

基本的解释器 /bin/bas 『 /sbin/ nologin --是用户禁止登入解释器』

用户操作的进程:用户--->解释器--->内核--->硬件

给用户设置密码

切换用户进入操作系统(以管理员身份切换、以普通用户身份切换)

usermod修改用户

-格式:usermod [选项]... 用户名

usermod -l [新用户名] 【用户名】

#更改用户账户的登入名称 -l(login)

usermod -u [1000-60000] [用户名]

#更改用户id -u(userid)

usermod -s [解释器] [用户名]

#修改用户登入解释器 -s(shell)

#修改用户的信息的时候也可以直接通过vim修改/etc/passwd里面保存着的用户信息

usermod -d [家目录] 【用户名】

#修改用户的家目录

#-d 默认不会自动创建新的家目录---意思就是在/etc/passwd里面让新家目录覆盖原家目录

 

usermod -md [家目录] 【用户名】

#会自动创建新的家目录,并将相应的数据与权限转移

usermod -G [附加组] 【用户名】

修改用户的附加组 #重置附加组 (了解),注意的是修改写入会覆盖

#覆盖了原来的组

#覆盖,并写入多个组(用逗号隔开)

passwd 设置用户密码

•格式:passwd [选项]... 用户名

交互式设置密码

passwd命令,支持非交互式设置密码

--stdin:从标准输入(比如管道)取密码

解析用户密码文件

/etc/shadow,保存密码字串/有效期等信息

每个用户记录一行,以:分割为9个字段

[root@localhost ~]# grep stu /etc/shadow

【注意】上一次修改密码的时间:自1970-1-1到达上一次修改密码的时间,所经历的天数

9个字段

  • 字段1:用户帐号的名称

  • 字段2:加密后的密码字符串

  • 字段3:上次修改密码的时间

  • 字段4:密码的最短有效天数,默认0

  • 字段5:密码的最长有效天数,默认99999

  • 字段6:密码过期前的警告天数,默认7

  • 字段7:密码过期后多少天禁用此用户账号

  • 字段8:帐号失效时间,默认值为空

  • 字段9:保留字段(未使用)

用户初始配置文件

主要的初始配置文件

~/.bashrc:每次进入新的Bash环境时执行(开启新的终端)

/etc/bashrc:全局配置文件,影响全体用户 (开启新的终端)

【注意:前者针对的是单个用户、后者对所有用户都适用。案例在前面笔记alias有所体现】

userdel删除用户
userdel命令

格式:userdel [-r] 用户名

添加 -r 选项,家目录/用户邮件也一并删除

【注】userdel 删除不掉家目录不再/home下的用户

[root@localhost ~]# userdel  -r  nsd18  #连同家目录一并删除
[root@localhost ~]# userdel  nsd20  #不删除家目录,只删除用户信息
userdel 删除的进程
  • 1.会在/etc/passwd删除一行信息

  • 2.会在/etc/shadow删除一行信息

  • 3.会在/home删除用户家目录(如果没有-r,跳过这一行)

  • 4.会在/var/spool/mail删除用户邮件文件

  • 5.会在/etc/group删除一行组信息

  • 6.会在/etc/gshadow删除一行组的管理信息

组账号管理

  • /etc/group,保存组帐号的基本信息

  • /etc/gshadow,组管理信息文件

每个组记录一行,以:分割为4个字段
[root@localhost ~]# grep stugrp /etc/group
stugrp:x:1504:nsd06
组名:组密码占位符:组的GID:组成员列表

 

gpasswd管理组成员

格式【语法】:gpasswd [选项]... 组名

•常用命令选项

-a:添加组成员,每次只能加一个

-d: 删除组成员,每次只能删一个

-M:定义(重置)组成员用户列表,可设置多个用户或者清空组员

#注意-M是覆盖写入

gpasswd -M ' ' #组员信息是空,则清空组员

-A :设置组的管理员(与-M一样,都是覆盖写入)

#组管理信息文件 /etc/gshadow

[root@localhost ~]# grep   tarena  /etc/gshadow
tarena:!:nb:     
组名:密码加密字符串:组的管理员列表:组成员列表
[root@localhost /]# gpasswd   -A   'nb,kenji'  tarena  #设置多个组管理员
[root@localhost /]# grep  tarena  /etc/gshadow
[root@localhost /]# gpasswd   -A   ''   tarena   #删除所有的组管理员
[root@localhost /]# grep  tarena   /etc/gshadow
groupdel 删除组

#删除组的时候,不可以删除基本组

[root@localhost ~]# groupdel   tarena    
[root@localhost ~]# groupdel   tmooc
[root@localhost ~]# grep   tmooc  /etc/group
[root@localhost ~]# grep  tarena  /etc/group

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

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

相关文章

鸿蒙开发接口Ability框架:【(AbilityContext)】

AbilityContext AbilityContext是Ability的上下文环境,继承自Context。 AbilityContext模块提供允许访问特定于ability的资源的能力,包括对Ability的启动、停止的设置、获取caller通信接口、拉起弹窗请求用户授权等。 说明: 本模块首批接口…

算法设计与分析 例题 绘制Huffman树、循环赛、分治、最短路与动态规划

1.考虑用哈夫曼算法来找字符a,b,c,d,e,f 的最优编码。这些字符出现在文件中 的频数之比为 20:10:6:4:44:16。要求: (1)(4 分)简述使用哈夫曼算法构造最优编码的基本步骤; (2)&…

代码已经推送到远程,如何退回之前的提交记录

现状:代码已经推送到远程,如何退回之前的提交记录 Sourcetree工具实现 最后使用命令强制推送: git push origin dev --forceidea 工具实现 强行推送

网络编程学习笔记1

文章目录 一、socket1、创建socket2、网络通信流程3、accept()函数4、signal()函数5、recv()函数6、connect()函数 二、I/O多路复用1.select模型2.poll模型3.epoll模型 注 一、socket 1、创建socket int socket(int domain,int type,int protocol); //返回值:一个…

ssm120基于SSM框架的金鱼销售平台的开发和实现+jsp

金鱼销售平台 摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于金鱼销售平台当然也不能排除在外,随着网络技术的不断成熟,带动了金鱼销售平台,它彻底改…

电商平台商品数据的价值在哪里?如何实现批量抓取?

一、电商平台商品数据的价值探秘 在数字经济的浪潮中,电商平台商品数据如同一座蕴藏着无尽宝藏的矿山,其价值远超过我们表面的认知。今天,就让我们一起揭开这座矿山的神秘面纱,探寻其中的奥秘。 首先,电商平台商品数…

FPGA第2篇,FPGA与CPU GPU APU DSP NPU TPU 之间的关系与区别

简介:首先,FPGA与CPU GPU APU NPU TPU DSP这些不同类型的处理器,可以被统称为"处理器"或者"加速器"。它们在计算机硬件系统中承担着核心的计算和处理任务,可以说是系统的"大脑"和"加速引擎&qu…

AI算法-高数5-线性代数1-基本概念、向量

线性代数:主要研究1、张量>CV计算机视觉 2、研究张量的线性关系。 深度学习的表现之所以能够超过传统的机器学习算法离不开神经网络,然而神经网络最基本的数据结构就是向量和矩阵,神经网络的输入是向量,然后通过每个矩阵对向量…

自动驾驶技术与传感器数据处理

目录 自动驾驶总体架构 感知系统 决策系统 定位系统 ​计算平台​ 仿真平台​ 自动驾驶公开数据集 激光点云 点云表征方式 1) 原始点云 2) 三维点云体素化 3)深度图 4)鸟瞰图 点云检测障碍物的步骤 PCL点云库 车载毫米波雷达 车载相机 设备标定 自动驾驶…

DMA原理、传输过程及传输方式

1.DMA DMA(Direct Memory Access,直接存储器访问),是硬件实现存储器与存储器之间或存储器与I/O设备之间直接进行数据传输的内存技术,它允许不同速度的硬件设备(外设到内存、内存到外设、内存到内存、外设到外设)进行沟通,而不需要…

MySQL相关文件的介绍

其中的pid-file/var/run/mysqld/mysqld.pid是用来定义MySQL的进程ID的信息的, 这个ID是操作系统分配给MySQL服务进程的唯一标识,使得系统管理员可以轻松识别和管理该进程。 其中的log-error/var/log/mysqld.log是MySQL的错误日志文件,如果有…

C++string 类的常用方法

string (构造函数) (1) default 构造长度为零字符的空字符串。 (2) copy 构造 str 的副本。 (3) substring 复制从字符位置 pos 开始并跨越 len 字符的 str 部分(如果任一 str 太短或 len 为 string::npos,则复制 str 的末尾…

Ardupilot开源代码之Rover上路 - 后续1

Ardupilot开源代码之Rover上路 - 后续1 1. 源由2. 问题汇总2.1 问题1:飞控选择2.2 问题2:飞控安装位置和固定2.3 问题3:各种插头、插座配套2.4 问题4:分电板缺陷2.5 问题5:电机编码器接线及正反向问题2.6 问题6&#x…

docker-compose集成elk(基于logstash+filebeat)采集java和nginx日志

1.准备compose.yml编排式文件 services: #日志信息同步logstash:container_name: logstashimage: docker.elastic.co/logstash/logstash:7.17.14 #logstash:command: logstash -f /usr/share/logstash/pipeline/logstash.confdepends_on:- elasticsearchrestart: on-failurepo…

车机HMI:驾驶员小命握在UI设计师手,九大法则必须遵循。

本文给大家列举了九大法则,欢迎评论点赞交流。 在车机HMI设计中,为了降低驾驶员的反应时间并增加驾驶安全性,可以遵循以下UI设计法则: 易读性和可识别性 确保界面上的文本和图标清晰易读,避免使用过小、过于复杂或模…

Crossplane 实战:构建统一的云原生控制平面

1 什么是 Crossplane Crossplane 是一个开源的 Kubernetes 扩展,其核心目标是将 Kubernetes 转化为一个通用的控制平面,使其能够管理和编排分布于 Kubernetes 集群内外的各种资源。通过扩展 Kubernetes 的功能,Crossplane 对 Kubernetes 集群…

GoF之代理模式(静态代理+动态代理(JDK动态代理+CGLIB动态代理带有一步一步详细步骤))

1. GoF之代理模式(静态代理动态代理(JDK动态代理CGLIB动态代理带有一步一步详细步骤)) 文章目录 1. GoF之代理模式(静态代理动态代理(JDK动态代理CGLIB动态代理带有一步一步详细步骤))每博一文案2. 代理模式的理解3. 静态代理4. 动…

[AIGC] 跳跃表是如何实现的?原理?

文章目录 什么是跳跃表查找流程:为什么使用跳跃表?跳跃表是怎么实现的? PS:跳跃表是比较常问的一种结构。 什么是跳跃表 Skip Lists: A Probabilistic Alternative to Balanced Trees 跳跃表是一种可以用来代替平衡树的数据结构。跳跃表使用概率平衡…

类和对象一(从封装开始讲述)

目录: 一.封装 二.封装扩展之包,自定义包 三.访问限定符 四.static成员 一.封装:封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行 交互。面向对象…

插件:Best HTTP

一、简介 WebSocket WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。…