Linux用户与权限管理

2023-05-16

Linux用户与权限管理

  • 前言
  • 一、管理用户账号
    • (1)用户账号概述
      • ①用户标识UID (User IDentity,用户标识号)
      • ②用户账号文件
    • (2)用户账号管理
      • ①添加用户账号(useradd)
      • ②设置/更改用户口令(passwd)
      • ③修改用户账号属性(usermod)
      • ④删除用户账号(userdel)
  • 二、管理组账号
    • (1)管理组账号概述
      • ①组账号的分类
      • ②组标识GID (Group IDentifi)
      • ③组账号文件位置
    • (2)组账号管理
      • ①添加组账号(groupadd)
      • ②添加删除组成员(gpasswd)
      • ③删除组账号(groupdel)
    • (3)查询账号信息
      • ①查询用户账户所属组(groups)
      • ②查询用户账号身份标识(id)
      • ③查询当前主机的用户登录信息(w、who、users)
      • ④查询用户账号的登录属性(finger)
    • (4)文件与目录的归属和权限
      • ①查看文件与目录的权限和归属
  • 三、设置文件与目录权限和归属
    • (1)设置文件与目录权限(chmod)
    • (2)设置文件与目录归属(chown)
    • (3)设置权限掩码创建文件与目录(umask)
  • 总结

前言

在Linux中会有不同的用户,我们可以给不同的用户以不同的权限,来实现不同的需求。在企业中也是通过创建不同用户分配不同的权限,来实现企业中的不同的职位分工权限大小。

一、管理用户账号

(1)用户账号概述

  • 超级用户:root用户是Linux操作系统中默认的超级用户账号,对本主机拥有最高的权限,系统中超级用户是唯一的。
  • 普通用户:由root用户或其他管理员用户创建,拥有的权限会受到限制,一般只在用户自己的宿主目录中拥有完整权限。
  • 程序用户: 在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如bin、daemon、ftp、mail等。

①用户标识UID (User IDentity,用户标识号)

  • root用户账号UID固定值0
  • 程序用户账号的UID默认为Centos7: 1~ 999,Centos5,6: 1~499
  • 普通用户的UID默认为Centos7: 1000~ 65535,Centos5, 6: 500~ 65535

②用户账号文件

作用:保存用户名称、宿主目录、登录Shell 等基本信息
位置:文件位置:/etc/passwd

  • 每一字段对应一个用户的账户记录:
    在这里插入图片描述

     字段1:用户账号的名称,也是登录系统时使用的识别名称。
     字段2:经过加密的用户密码字串,或者密码占位符“x”。
     字段3:用户账号的 UID 号。
     字段4:所属基本组账号的 GID 号。
     字段5:用户全名,可填写与用户相关的说明信息。
     字段6:宿主目录,即该用户登录后所在的默认工作目录。
     字段7:登录 Shell 等信息,用户完成登录后使用的 Shell
    

基于系统运行和管理需要,所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改。在早期的UNIX操作系统中,用户帐号的密码信息是保存在passwd文件中的,不法用户可以很容易的获取密码字串并进行暴力破解,因此存在一 定的安全隐患。后来经改进后,将密码转存入专门的shadow文件中, 而passwd文件中仅保留密码占位符“x”。
在这里插入图片描述

第一列:账户名
第二列:存放真正加密的密码,采用SHA512散列算法,更加安全
第三列:上一次修改密码的时间,从1970年1月1日开始算的,因为1970年是linux的诞生日,date -d "1970-01-01 15775 days"可以查看哪一天改过
第四列:多久之后才可以修改密码,如果是 0,则密码可以随时修改
第五列:密码有效期,默认99999,表示永久生效
第六列:密码到期前的第几天发出告警信息,默认是7天,每次登录系统都会向该账户发出 "修改密码" 的警告信息
第七列:密码过期的宽限天数,过期后的几天还是可以登陆的,如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用
第八列:账号失效时间,使用自  1970 年 1 月 1 日以来的总天数作为账户的失效时间
第九列:保留,未使用

这里要注意的是第二列!!和*表示没有密码不能登陆,新创建用户也是!!,如果密码前面显示双感叹号表示该账户被锁定了

  • 如果在环境生产中程序升级程序失败,出现账号已过期的报错,可以将账号设置为永不过期,即将第五个字段更改为99999,表示不进行限制,即可
  • shadow的权限是非常高的,不能进行读取编辑与执行

(2)用户账号管理

①添加用户账号(useradd)

格式:useradd [选项] 用户名

选项作用
-u指定用户的UID号,要求该UID号码未被其他用户使用
-d指定用户的宿主目录位置(当与-M一起使用时,不生效)只能用绝对路径指定目录,且不需要事先创建目录
-e指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式
-g指定用户的基本组名(或使用GID号),对应的组名必须已存在
-G指定用户的附加组名(或使用GID号),对应的组名必须已存在
-M不建立宿主目录。(一般用于系统用户账号)
-s指定用户的登录Shell,(比如/bin/bash为可登陆系统,Isbin/nologin和/bin/false为禁止用户登陆系统)
示例一:
在这里插入图片描述
示例二:
在这里插入图片描述

②设置/更改用户口令(passwd)

  • root用户可以指定用户名作为参数,对指定账号的密码进行管理;不指定用户名时,修改当前账号的密码。
  • 普通用户只能执行单独的“passwd"命令修改自己的密码。
    基本格式:passwd [选项] 用户名
选项作用
-d清空指定用户的密码,仅使用用户名即可登录系统
-l锁定用户账户,锁定的用户账号将无法再登录系统
-S查看用户账户的状态(是否被锁定)
-u解锁用户账户
示例:
在这里插入图片描述
在这里插入图片描述

③修改用户账号属性(usermod)

  • 对于系统中已存在的用户账号,可以使用 usermod 命令重新设置各种属性
  • 使用 usermod 命令时,其大部分的选项与 useradd 命令的选项是相对应的,作用也相似

格式:usermod [选项] 参数 用户名

选项格式
-u修改用户的UID号
-d修改用户的宿主目录位置
-e修改用户的账户失效时间,可使用YYYY–MM-DD的日期格式
-g修改用户的基本组名(或使用GID号)
-G修改用户的附加组名(或使用GID号)
-M不建立宿主目录,即使/etc/login.defs系统配置中已设定要建立宿主目录
-s指定用户的登录Shell
-l更改用户账号的登录名称 格式:usermod -l 新名称 旧名称
-L锁定用户账户
-u解锁用户账户
这里值得注意的是,usermod和passwd命令都有锁定和解锁功能,不同的是usermod会在密码占位符前加“!”而passwd则是加“!!”,但是他们都可以互相解锁。
示例:
在这里插入图片描述

④删除用户账号(userdel)

格式:userdel [-r] 用户名
示例:
在这里插入图片描述

这里值得一提的是,当我们因为忘记使用-r删除用户账号,再创建同名账号时,会出现报错信息,提示我们用户已存在,或被占用进程。虽然在虚拟机中,我们可以直接重启解决,但是实际工作当中当然不能随意重启。
这时候,我们只需要进入宿主目录使用rm -rf删除宿主目录
接着,用userdel -f强制删除即可
如果此时依旧提示占用进程,则用ps -u 加用户名查看进程
再用kill +进程号关闭进程即可

二、管理组账号

(1)管理组账号概述

①组账号的分类

基本组(私有组): 基本组账号只有一个,一般为创建用户时指定的组。在/etc/passwd文件中第4段记录的即为该用户的基本组GID号。
附加组(公共组): 用户除了基本组以外,额外添加指定的组。

②组标识GID (Group IDentifi)

  • root用户账号的GID固定值0
  • 程序用户账号的GID默认为Centos7: 1~ 999,Centos5,6: 1~499
  • 普通用户的GID默认为Centos7: 1000~ 65535,Centos5, 6: 500~ 65535

③组账号文件位置

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

  • /etc/gshadow:保存组帐号的密码信息
    与用户账号相同,每一字段对应一个记录
    在这里插入图片描述

      字段1:组帐号的名称
      字段2: 占位符“x”
      字段3:组账号的GID号
      字段4:组账号包含的用户成员(一般不包括基本组对应的用户帐号),多个成员之间以逗号“,"分隔
    

(2)组账号管理

①添加组账号(groupadd)

格式:groupadd [-g GID] 组账号
示例:
在这里插入图片描述

②添加删除组成员(gpasswd)

格式:gpassdw [选项] 组账号名

选项作用
-a向组内添加一个用户
-d从组内删除一个用户成员
-M定义组成员列表,以逗号分隔
需要注意的是“-M”是重新定义,而不是追加
“-M”使用后,追加用户只能使用“-a”
示例:
在这里插入图片描述

③删除组账号(groupdel)

格式:groupdel 组账号名
示例:
在这里插入图片描述

(3)查询账号信息

①查询用户账户所属组(groups)

格式:groups 用户名
示例
在这里插入图片描述

②查询用户账号身份标识(id)

格式:id 用户名
示例
在这里插入图片描述

③查询当前主机的用户登录信息(w、who、users)

在这里插入图片描述

④查询用户账号的登录属性(finger)

格式:finger 用户名
在这里插入图片描述

(4)文件与目录的归属和权限

  • 在 Linux 文件系统的安全模型中,为系统中的文件赋予了两个属性:访问权限与文件所有者,简称为“权限”和“归属”
  • 其中,访问权限包括读取、写入、可执行三种基本类型,归属包括属主(拥有该文件的用户账号)、属组(拥有该文件的组账号)
  • Linux 系统根据文件或目录的访问权限、归属来对用户访问数据的过程进行控制

①查看文件与目录的权限和归属

在这里插入图片描述

  • 最前的"-"表示该文件的类型,可以是d(目录)、b(块设备文件)、c(字符设备文件)、“-”(普通文件)、字母“ l ”(链接文件)等
  • 第二段的“rw-”表示该文件的属主用户(User)对该文件的访问权限
  • 第三段的“r–”表示该文件的属组内各成员用户(Group)对该文件的访问权限
  • 表示其他任何用户(Other)对该文件的访问权限
  • 后面的两个root分别表示属主与属组
    在这里插入图片描述

访问权限
读取r:允许查看文件内容、显示目录列表
写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
可执行x:允许运行程序、切换目录
归属(所有权)
属主:拥有该文件或目录的用户账号
属组:拥有该文件或目录的组账

三、设置文件与目录权限和归属

(1)设置文件与目录权限(chmod)

格式
数字方式:chmod nnn 文件/目录名
字母方式:chmod [ugoa···][±=][rwx] 文件名
示例一:
在这里插入图片描述
在这里插入图片描述

示例二:“-R”可以设置当前目录下所有的文件与子目录的权限

在这里插入图片描述

(2)设置文件与目录归属(chown)

格式
chown:属主 文件或目录
chown: 属组 文件或目录
chown:属主:属组 文件或目录
示例一:
在这里插入图片描述

示例二:-R递归修改指定目录下所有文件、子目录的归属
在这里插入图片描述

(3)设置权限掩码创建文件与目录(umask)

在我们创建一个新的文件或者目录时,他的权限是由默认权限的,而我们可以用umask来设置这个默认权限。
格式:umask nnn (nnn是权限掩码)
这里的权限掩码与正常的权限设置相反,可以理解为,正常的设置是从0到7权限增加,需求什么权限就用0+n,而权限掩码则是从7到0权限增加,需求什么权限就用7-n。
示例:
在这里插入图片描述

总结

文件与目录的权限和归属在Linux中是很重要的知识点,其相关的命令也会比较多。当然虽然多,但都不能理解,多花点精力熟练掌握便好。

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

Linux用户与权限管理 的相关文章

  • 高质量嵌入式Linux C编程 第三章 运算符、表达式学习

    一 运算符有哪几类 xff1f xff08 1 xff09 算数运算符 xff1a 43 43 43 七种 xff08 2 xff09 关系运算符 xff1a gt lt 61 61 gt 61 lt 61 xff01 61 六种 xff0
  • 设计一种可全向移动的球形机器人

    一 前言 之前在网上看到一种球形机器人 xff0c 觉得很有趣 xff0c 而且原理也比较简单 xff0c 大概就是把一辆小车放在一个透明的亚克力球中 xff0c 控制小车使球体滚动 xff0c 姿态控制算法与平衡小车类似 xff0c 然后
  • ROS-Python

    用python来编写ros话题 服务方面常用的几个点 xff1a 话题topic 1 初始化节点 rospy init node 34 节点名字 34 举例 xff1a rospy init node 34 test 34 anonymou
  • 关于SBUS信号在单片机中的一些个人理解

    最近一直在弄关于SBUS的编码与解码这方面的内容 xff0c 虽然网上资料很多 xff0c 但是网上资料太杂 xff0c 我找的一些资料可能是我理解的问题 xff0c 所以我摒弃了一些骚操作 xff0c 对于一些单片机学得不精的人来说 xf
  • C++中的指针

    以下为本人大一时阅读 C 43 43 Primer Plus 关于指针的章节所做的笔记 指针 一个函数只能返回一个值 xff0c 但是如果使用指针来传递变量 xff0c 则可以修改更多的值 xff0c 可以达到返回不止一个值的效果 用指针作
  • 四旋翼建模

    文章整理于 xff1a 共轴八旋翼无人飞行器姿态与航迹跟踪控制研究 彭程点击打开链接
  • 最新定时更新:Spring Cloud 各个版本整理汇总。最新为2022,Kilburn版本

    网址 xff1a https spring io 英文中文终结版本boot大版本boot代表说明Angel安吉尔SR61 2 X1 2 8GABrixton布里克斯顿SR71 3 X1 3 8GACamden卡梅登SR71 4 X1 4 2
  • 深度学习(23):SmoothL1Loss损失函数

    0 基本介绍 SmoothL1Loss是一种常用的损失函数 xff0c 通常用于回归任务中 xff0c 其相对于均方差 MSE 损失函数的优势在于对异常值 如过大或过小的离群点 的惩罚更小 xff0c 从而使模型更加健壮 SmoothL1L
  • Jetson Nano\NX\AGX 学习笔记

    Jetson Nano NX AGX 学习笔记 1 jetson平台安装pytorch torchvision2 yolov5模型部署deepstream x86 jetson平台2 0 下载 96 deepstream6 1 96 2 1
  • jetson系列硬件性能对比

    参考 Jetson Modules https developer nvidia com embedded jetson modules 第一种 4G 价格 1000元 1x 4K30 2x1080p60 4x1080p30 4x720p6
  • 遍历_EPROCESS->ObjectTable->HandleTableList链表枚举进程

    include lt ntifs h gt include lt ntddk h gt UCHAR PsGetProcessImageFileName in PEPROCESS Process HANDLE PsGetProcessInhe
  • Ubunut18.04安装Autoware1.12

    官方提供了两种安装Autoware的方法 xff1a Docker和Source两种方式 下边以Ubuntu18 04环境为例 xff0c 记录Source的安装方法 1 配置要求 1 1硬件 1 2软件 Qt安装 qmake span c
  • PuTTY在远程连接服务器之后,经常会断线提示“Software caused connection abort”,而且经常在很短的时间内就失去连接

    解决方案如下 xff1a 第一步 xff1a 设置服务器 1 修改服务器中 etc ssh sshd config 文件 xff0c 将LoginGraceTime的值设为0 xff0c TCPKeepAlive 设为yes 2 servi
  • Go语言循环语句

    Go语言循环语句 资料参考至菜鸟教程 在不少实际问题中有许多具有规律性的重复操作 xff0c 因此在程序中就需要重复执行某些语句 以下为大多编程语言循环程序的流程图 xff1a Go语言提供了以下几种类型循环处理语句 xff1a 循环类型描
  • Lua 协同程序(coroutine)

    Lua 协同程序 coroutine 参考文章 xff1a 菜鸟教程 https zhuanlan zhihu com p 480357405 https zhuanlan zhihu com p 76249973 Lua 协同程序 cor
  • Lua 变量

    Lua 变量 参考至菜鸟教程 变量在使用前 xff0c 需要在代码中进行声明 xff0c 即创建该变量 变量需要标识类型是因为编译程序执行代码之前需要知道如何给语句变量开辟存储区 xff0c 用于存储变量的值 Lua变量有三种类型 xff1
  • Lua 函数 - 可变参数

    Lua 函数 可变参数 参考至菜鸟教程 Lua函数可以接收可变数目的参数 xff0c 和C语言类似 xff0c 在函数参数列表中使用三点 表示函数有可变的参数 span class token keyword function span s
  • Lua 运算符 - 较为特殊部分

    Lua 运算符 较为特殊部分 参考至菜鸟教程 算术运算符 操作符描述实例 乘幂A 2 输出结果 100 负号 A 输出结果 10 整除运算符 gt 61 lua5 3 5 2 输出结果 2 在 lua 中 xff0c 用作除法运算 xff0
  • python(9):python循环打印进度条

    1 while 循环 Python的while循环可以打印进度条 xff0c 可以使用tqdm这个库来实现 tqdm是一个用于在Python中添加进度条的库 xff0c 它可以很容易地集成到while循环中 下面是一个简单的示例 xff0c
  • 平衡车直立PID调节总结

    苦战一周 xff0c 终于使平衡小车站了起来 xff0c PID无疑是我从学习板子至今遇到最困难的东西了 xff0c 并不是说它原理有多么复杂 xff0c 只是想让小车的效果更佳 xff0c 调参的过程无疑是漫长而艰难的 连续调了俩天的参数

随机推荐

  • Lua 字符串

    Lua 字符串 参考至菜鸟教程 字符串或串 String 是由数字 字母 下划线组成的一串字符 Lua 语言中字符串可以使用以下三种方式来表示 xff1a 单引号间的一串字符 双引号间的一串字符 与 间的一串字符 以上三种方式的字符串实例如
  • Lua 迭代器

    Lua 迭代器 参考文章 xff1a 菜鸟教程 https cloud tencent com developer article 2203215 迭代器 xff08 iterator xff09 是一种对象 xff0c 它能够用来遍历标准
  • Lua table(表)

    Lua table 表 参考至菜鸟教程 Lua table 使用关联型数组 xff0c 你可以用任意类型的值来作数组的索引 xff0c 但这个值不能是 nil Lua table 是不固定大小的 xff0c 你可以根据自己需要进行扩容 Lu
  • Lua 模块与包

    Lua 模块与包 参考至菜鸟教程 模块类似于一个封装库 xff0c 从 Lua 5 1 开始 xff0c Lua 加入了标准的模块管理机制 xff0c 可以把一些公用的代码放在一个文件里 xff0c 以 API 接口的形式在其他地方调用 x
  • Lua 文件I/O

    Lua 文件I O 参考至菜鸟教程 Lua I O 库用于读取和处理文件 分为简单模式 xff08 和C一样 xff09 完全模式 简单模式 xff08 simple model xff09 拥有一个当前输入文件和一个当前输出文件 xff0
  • Lua 错误处理

    Lua 错误处理 参考至菜鸟教程 程序运行中错误处理是必要的 xff0c 在我们进行文件操作 xff0c 数据转移及web service 调用过程中都会出现不可预期的错误 如果不注重错误信息的处理 xff0c 就会造成信息泄露 xff0c
  • Lua 调试(Debug)

    Lua 调试 Debug 参考至菜鸟教程 Lua 提供了 debug 库用于提供创建我们自定义调试器的功能 Lua 本身并未有内置的调试器 xff0c 但很多开发者共享了他们的 Lua 调试器代码 Lua 中 debug 库包含以下函数 x
  • Lua 垃圾回收

    Lua 垃圾回收 参考至菜鸟教程 Lua 采用了自动内存管理 这意味着你不用操心新创建的对象需要的内存如何分配出来 xff0c 也不用考虑在对象不再被使用后怎样释放它们所占用的内存 Lua运行了一个垃圾收集器来收集所有死对象 xff08 即
  • Lua 面向对象(详解)

    Lua 面向对象 xff08 详解 xff09 参考文章 xff1a https blog csdn net linxinfa article details 103254828 https zhuanlan zhihu com p 115
  • Lua实现矩阵的加减乘除

    Lua实现矩阵的加减乘除 参考文章 xff1a https blog csdn net qq 54180412 article details 122943327 https www bilibili com video BV1434y18
  • ubuntu系统配置大恒相机驱动并读取ros话题

    文章目录 0 说明1 安装大恒相机sdk1 1 下载1 2 安装sdk 用于配置ip和调试相机参数 1 电脑网卡配置 网卡固定ip 2 查看相机图像以及配置相机参数 2 安装ros驱动包 注 xff1a 大恒相机官方没ros驱动 2 0 正
  • C++类对象与Lua之间的交互

    C 43 43 类对象与Lua之间的交互 C语言与Lua进行交互 xff0c 我们可以相对轻易的做到 xff0c 但在实际应用中我们更加偏向于使用C 43 43 与Lua进行交互 xff0c 面向对象编程 关于C语言与Lua之间的调用交互实
  • C++与Lua交互实例 -- 矩阵的加减乘除(版本一)

    C 43 43 与Lua交互实例 矩阵的加减乘除 xff08 版本一 xff09 关于lua中封装的类模板以及相关知识可参考以下链接 xff1a https ufgnix0802 blog csdn net article details
  • C++与Lua交互实例 -- 矩阵的加减乘除(版本二)

    C 43 43 与Lua交互实例 矩阵的加减乘除 xff08 版本二 xff09 TIPS xff1a 关于使用矩阵的加减乘除测试C 43 43 与Lua的交互以及下面没讲述到的知识点可以阅读第一版 xff1a https blog csd
  • Windows下LuaBridge2.8的环境配置及简单应用

    Windows下LuaBridge2 8的环境配置及简单应用 LuaBridge2 8下载链接 xff1a https github com vinniefalco LuaBridge tags 关于Lua的环境配置可参考以下链接 xff0
  • Lua 开发过程中常见坑

    Lua 开发过程中常见坑 Lua next span class token keyword return span G span class token punctuation span span class token function
  • 私网与公网地址转换

    私网与公网地址转换 NAT概述NAT功能静态NAT动态NATEASYIP xff08 多个内网地址对一个接口 xff09 PAT端口多路复用 NAT概述 NAT xff08 Network Address Translation xff0c
  • VWmare安装CentOS7及连接Xshell超详细过程(图文)

    VWmare安装CentOS7及连接Xshell超详细过程 xff08 图文 xff09 前言一 准备工作二 安装虚拟机过程 1 选择文件 xff0c 新建虚拟机 2 选择配置类型 3 自定义硬件配置 4 进入系统安装界面 二 连接Xshe
  • rpm与yum

    rpm与yum 前言一 应用程序与命令系统的关系二 典型应用程序的目录结构三 常见的软件封装类型四 rpm 1 概述 2 命令概述 3 查询rpm软件包信息 查询已安装的rpm软件信息 查询未安装的rpm软件包文件中的信息 安装 升级 卸载
  • Linux用户与权限管理

    Linux用户与权限管理 前言一 管理用户账号 1 用户账号概述 用户标识UID xff08 User IDentity xff0c 用户标识号 xff09 用户账号文件 2 用户账号管理 添加用户账号 xff08 useradd xff0