• Linux用户分类和权限详解


    Linux用户分类和权限详解

    在这里插入图片描述



    一、用户种类

    linux系统中用户分为三类:

    1. root超级用户:root(超级管理员),UID为0,这个用户有极大的权限,可以直接无视很多的限制,包括读写执行的权限
    2. ftp系统用户:系统用户,UID为1~499。一般是不会被登入的,系统中系统服务由不同用户运行,更加安全,默认被限制登录系统。
    3. test普通用户:普通用户,UID范围一般是500~65534。这类用户的权限会受到基本权限的限制,也会受到来自管理员的限制。不过要注意nobody这个特殊的帐号,UID为65534,这个用户的权限会进一步的受到限制,一般用于实现来宾帐号。

    UID和GID

    • UID,也就是用户 ID。每个用户都有唯一的一个 UID,Linux 系统通过 UID 来识别不同的用户。一般默认root用户UID是0。实际上,UID 就是一个 0~65535 之间的数,不同范围的数字表示不同的用户身份,具体如表所示:

    在这里插入图片描述
    且需要注意:
    在这里插入图片描述

    • GID,全称“Group ID”,简称“组ID”,表示用户初始组的组 ID 号
    • GID 是用户组的编号,可以将多个用户加入到某个组中,方便指派任务或工作。每个用户在被创建时均会创建一个默认组(其GID与UID相同,叫作基本组或初始组),而后加入的组叫作扩展组或附加组。用户组名和GID则保存在 /etc/group 文件中。并且在 /etc/passwd 文件的第四个字段中看到的 ID 是这个用户的初始组。

    初始组,指用户登陆时就拥有这个用户组的相关权限。每个用户的初始组只能有一个,通常就是将和此用户的用户名相同的组名作为该用户的初始组。
    附加组,指用户可以加入多个其他的用户组,并拥有这些组的权限。每个用户只能有一个初始组,除初始组外,用户再加入其他的用户组,这些用户组就是这个用户的附加组。附加组可以有多个,而且用户可以有这些附加组的权限。

    小结:linux下用户的ID分为两类:UID和GID。每个文件都有自己的拥有者 ID 和群组 ID,当显示文件属性时,系统会根据 /etc/passwd 和 /etc/group 文件中的内容,分别找到 UID 和 GID 对应的用户名和群组名,然后显示出来。


    1)/etc/passwd

    首先我们来看一下这个文件目录下保存了什么东西,效果如图:
    在这里插入图片描述

    • 当然这里只是截图了一部分。那么看到这里你可能会蒙蔽,这么多用户哪来的。那么这里可以告诉你这些用户中的绝大多数是系统或服务正常运行所必需的用户,这种用户通常称为
      系统用户或伪用户
    • 系统用户无法用来登录系统,但也不能删除,因为一旦删除,依赖这些用户运行的服务或程序就不能正常执行,会导致系统问题。
      且每行用户信息都以 “:” 作为分隔符,划分为 7 个字段,每个字段所表示的含义如下:

    用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell

    • 首先用户名,没啥好说的,就是代表用户的一段字符串,但是系统识别用户是用过UID来识别并且去分配权限,而/etc/passwd文件中就说明了用户名和UID的关系
    • 密码的话,“x” 表示此用户设有密码,但不是真正的密码,真正的密码保存在 /etc/shadow 文件中。
    • 其次就是该文件是系统用户配置文件,所有的用户都具有可读权限

    2)/etc/shadow

    用于存储 Linux 系统中用户的密码信息,又称为“影子文件”。
    且该文件只有root用户有读权限,这就保证了密码的安全性。
    在这里插入图片描述
    格式如下:

    用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段

    • 加密口令 :使用SHA-512/SHA-256/MD5 算法加密后的密码,若为空,表示该用户无需密码即可登录,若为 “*” 表示该账号不能用于登录系统,若为 “ !! ” 表示该账号密码已被锁定,无法的登录。

    3)/etc/group

    在这里插入图片描述
    格式:

    组名:密码:GID:该用户组中的用户列表

    4)/etc/gshadow

    在这里插入图片描述

    组名:加密密码:组管理员:组附加用户列表
    个人的话是用不着的,企业里会用了解就好

    二、文件权限

    1.文件访问用户分类

    对于linux的文件有三种不同的用户权限类型

    1. 文件或目录的属主 u —— User
    2. 与属主同组的用户 g —— Group
    3. 其他用户(超级管理员除外) o —— Others

    2.文件访问权限

    在这里插入图片描述
    比如随便打开一个文件:

    在这里插入图片描述

    • 对于第一个选项d表示的是文件类型:

    d:文件夹
    -:普通文件
    l:软链接(类似Windows的快捷方式)
    b:块设备文件(例如硬盘、光驱等)
    p:管道文件
    c:字符设备文件(例如屏幕等串口设备)
    s:套接口文件

    • 权限:

    分为三种:

    1. 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏> 览该目录信息的权限
    2. 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有
      删除移动目录内文件的权限
    3. 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有>进入目录的权限
    4. “—”表示不具有该项权限
    • 那么用符号表示:

    在这里插入图片描述

    1. 用8进制数表示:
      在这里插入图片描述

    3.文件权限修改

    chmod命令

    功能:设置文件的访问权限
    格式:chmod [参数] 权限 文件名

    -R -> 递归修改目录文件的权限
    说明:只有文件的拥有者和root才可以改变文件的权限

    1. 通过+/-权限字符修改文件访问权限

    +:向权限范围增加权限代号所表示的权限
    -:向权限范围取消权限代号所表示的权限
    =:向权限范围赋予权限代号所表示的权限
    用户符号:
    u:拥有者
    g:拥有者同组用
    o:其它用户
    a:所有用户

    比如说为文件text.txt的拥有用户增加可执行功能
    在这里插入图片描述

    2. 通过8进制数字修改文件访问权限

    比如改变为640执行权限这里是引用

    chown命令

    • 功能:修改文件的拥有者 格式:chown [参数] 用户名 文件名
    • -R:递归更改文件属组,就是在更更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

    在这里插入图片描述

    chgrp命令

    • 功能:修改文件或目录的所属组 格式:chgrp [参数] 用户组名 文件名
      在这里插入图片描述

    umask命令

    查看或修改文件掩码 新建文件夹默认权限=0666 新建目录默认权限=0777
    但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
    格式:umask 权限值
    说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用 户默认为0002。

    umask码详细解读

    三、目录的权限

    • 在linux 环境下万物皆文件,目录也是,也具有读写和可执行三种权限。

    可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
    可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
    可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件

    • 但是为了防止其他用户具有写目录的权限就可以删除我们的文件,因此需要用到粘滞位
    						chmod +t test.txt
    
    • 1

    这样就可以避免被目录可写的访问者删除


    总结

    • 目录的可执行权限是表示你可否在目录下执行命令。
    • 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限
    • 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档
  • 相关阅读:
    P35 JTree树
    C++ Reference: Standard C++ Library reference: C Library: cmath
    51单片机1【单片机到底是什么】
    MySQL数据库运维第一篇(日志与主从复制)
    管理类联考——英语二——阅读篇——题材:教育
    更换有该包的软件源,如官方源,这个怎么更换
    【gRPC】快速入门
    xcode打包macos报错:FlutterInputs.xcfilelist 和 FlutterOutputs.xcfilelist
    JavaSE基础阶段测试+平时测验
    论文被多人研究过了,我还可以怎么写?
  • 原文地址:https://blog.csdn.net/weixin_51484780/article/details/127795003