Linux 用户管理与文件权限

在这里插入图片描述

Linux 是一个多用户系统,它允许多个用户同时登陆主机,并为他们分配不同的资源和工作环境进行使用。当然,不同的用户都有文件的私有需求,所以设置不同用户文件的权限管理十分重要。

01 用户与用户组


Linux 中一般将文件访问权限的身份分为三种角色:文件所有者、用户组成员、其他人(owner/group/others)

1.1 用户身份

1.1.1 文件所有者 owner

文件所有者角色是 Linux 系统保护用户私有空间的重要方式。

当多个用户同时登录主机时,文件所有者对文件具有绝对访问权限并可以限制其他用户对该文件的访问权限,其他用户如需访问该文件,需要文件所有者授权才可访问。

1.1.2 用户组成员 group

用户组成员角色是为了方便用户在局部范围内共享文件内容。

例如,在团队开发中,如果 Linux 系统仅提供 owner 和 others 角色,那么当文件所有者想给其他团队成员开放文件访问权限时,就会出现文件直接对团队之外角色公开的情况。

将文件所有者之外的用户角色区分为用户组成员 group 和其他人 others,可以在向与文件所有者划分在一个用户组的用户组成员开放文件访问权限的同时,对其他用户保持私用。

1.1.3 其他人 others

其他人角色是用户公开文件访问权限的方式。

文件所有者可以通过向 others 角色开放文件访问权限,向与文件所有者没有任何联系的其他用户共享文件。

当然,除了 owner/group/others 三种用户之外,还有掌控一切的系统用户 root,root 用户可以访问主机中的一切文件。root 用户所在的用户组称为 root组,处于 root 组的普通用户,能够通过 sudo 命令获取 root 权限。

1.2 用户管理

1.2.1 用户管理相关文件

在 Linux 系统中,默认情况下,系统上所有的用户账号通过用户 ID (User ID ,简称 UID)、一个是用户组 ID (Group ID ,简称 GID)标识,并都记录在 /etc/passwd 这个文件内的,对应的密码则是记录在 /etc/shadow 文件下。 此外,Linux 所有的用户组信息和密码都纪录在 /etc/group/etc/gshadow 内。

这些文件中,每一行表示一条记录,每条记录中个属性字段通过冒号:分隔。

(1) /etc/passwd

该文件管理用户 UID 和 GID 等重要参数。

每一行都代表一个用户账号,其中包括一些系统正常运行所必须的系统账号,例如 bin, daemon, adm, nobody 等。

在这里插入图片描述

冒号:分隔开的 7 个字段含义是:

  • 账号名称:用户账号的 username

  • 口令:即账号密码,但是现在的账号密码都保持在 /etc/shadow 文件中了,此处使用 x 符号占位

  • UID:用户标识符 User ID,root 用户的 UID 是 0

  • GID:用户组标识符 Group ID

  • 用户账号描述:没实际含义

  • 用户目录:用户空间

  • shell:用户登录系统后与主机进行交互的命令行工具,默认是 /bin/bash

(2) /etc/shadow

该文件管理用户的登录口令。

冒号:分隔开的 9 个字段含义是:

  • 账号名称:用户账号的 username

  • 口令:经过编码加密的账号密码

  • 最近更动口令的日期

  • 口令不可被更动的天数

  • 口令需要重新变更的天数

  • 口令需要变更期限前的警告天数

  • 口令过期后的账号宽限时间

  • 账号失效日期

(3) /etc/group

该文件管理用户组信息,与 /etc/passwd 中的 GID 对应。

每一行代表一个群组,冒号:分隔开的 7 个字段含义是:

  • 用户组名称

  • 用户组口令:一般不需配置,用不到

  • GID:用户组标识符 Group ID

  • 用户组包含的用户名称:一个账号可以加入多个群组,那某个账号想要加入此群组时,将该账号填入这个字段即可。

(4) /etc/gshadow

用户组口令都不咋用,这个文件的存在感也比较弱…

1.2.2 用户管理相关命令

Linux 提供了一组用户账号和用户组管理命令对账号进行新增、 移除与更改

(1) 用户管理命令

  • useradd:新建用户

    useradd [options] [username]
    
  • passwd:设置或修改用户的口令和口令属性

    passwd [options] [username]
    
  • usermod:user modify 修改用户的属性

    usermod [options] [username]
    
  • userdel:user delete 删除指定用户账号

    userdel [options] [username]
    
  • su:切换用户身份;exit 退出超级用户

    su [options] [username]
    

(2) 用户组管理命令

  • groupadd:添加用户组

    groupadd [options] [groupname]
    
  • groupmod:修改用户组属性

    groupmod [options] [groupname]
    
  • groupdel:删除指定用户组

    groupdel [options] [groupname]
    

02 文件权限


Linux 系统中文件有第一节中的三种访问角色 owner/group/others,对于文件这三种身份还各有 read/write/execute 三种访问权限。通过这三种角色和访问权限控制可以到来 Linux 系统的如下优势:

  • 系统保护:关于系统服务的文件通常只有 root 角色能访问,可以有效保护系统中的重要文件。

  • 团队开发文件共享:通过设置用户组权限,让团队成员能够共享指定目录下的文件数据。

2.1 文件属性

在 Linux 系统中进入任意目录,然后使用 ls 命令查看当前目录下文件的文件名与相关属性,也可以增加选项参数 ls -la 显示所有的文件详细的权限与属性。

在这里插入图片描述

如上图所示,list 命令显示的内容中每一行即是一个文件的相关属性,每一条记录的 7 个字段含义如下(图片来源网络,如有侵权请告知):

在这里插入图片描述

(1) 文件类型与权限

文件类型与权限由 10 个字符构成(图片来源网络,如有侵权请告知):

在这里插入图片描述

第一个字符代表该文件的类型:

  • [ d ] 表示目录

  • [ - ] 表示文件

  • [ l ] 表示链接

  • [ b ] 表示装置文件里面的可供储存的接口设备,即可随机存取装置

  • [ c ] 表示装置文件里面的串行端口设备,例如键盘、鼠标等一次性读取装置

剩下的 9 个字符,三个为一组分别表示 owner/group/others 三种角色的 read/write/execute 三种访问权限

(2) 文件链接数

Linux 文件系统 Ext2 使用的是以 inode 为基础的文件系统,inode 的内容在记录文件的权限与相关属性,block 区块中才是记录文件实际内容的位置。

文件属性的这个字段就是记录的有多少不同的文件连结到相同的一个 inode 号码

(3) 文件所有者

表示文件或目录的所有者名称

(4)所属用户组

表示文件或目录所属用户组的名称

(5) 文件大小

表示文件的容量大小,默认单位为字节 bytes

(6) 时间戳

记录文件的创建日期或者是最近的修改日期。

记录的时间一般为 月/日/时间 的形式,如果这个文件被修改的时间跨度过大,那么时间部分会仅显示年份。

(7) 文件名称

文件的名称,如果文件名以.开头则说明他是隐藏文件

2.2 文件属性修改命令

文件属性的修改命令分别针对文件所有者和所属用户组有 chown, chgrp,文件权限修改命名则是 chmod

  • chown :改变文件拥有者

  • chgrp :改变文件所属群组

  • chmod :改变文件的权限

(1) chown

文件在创建的时候就指定了文件所有者,当将文件复制或移动到其他用户目录下时,就需要变更文件的所有者了,因为复制操作会根据执行命令的用户确定拷贝的文件文件所有者。

chown [options] [owner] [filename/directory]

使用该命令修改目录时,可以通过添加 -R 选项进行递归的持续变更,即连同次目录下的所有文件都变更文件所有者。

chown -R [owner] [irectory]

chown 目录还可以顺带修改用户组,使用冒号连接 用户:用户组 同时修改文件所有者和所属用户组。

chown [options] [owner:group] [filename/directory]
(2) chgrp

仅修改文件所属的用户组可以使用 chgrp 命令实现,当然修改时要确保用户组是存在的。

chgrp [options] [group] [filename/directory]

如果要修改目录下所有文件的所属用户组,同样的使用 -R 参数进行递归的持续变更。

chgrp -R [group] [directory]
(3) chmod

修改文件权限的命令则是 chmod,该命令可以通过数字类型和符号类型两种形式设定文件权限。

数字类型:

Linux 系统中 read/write/execute 三种访问权限分别对应的数字分数是:read(4), write(2), execute(1)

每个用户角色的权限可以用三种访问权限的数字分数累加结果表示,例如文件权限-rwxr-x---的数字分数表示是 750

owner = rwx = 4+2+1 = 7
group = r-x = 4+0+1 = 5
others= --- = 0+0+0 = 0

使用数字类型的 chmod 权限修改命令形式为:

chmod [options] [number] [filename/directory]
# example:
chmod -R 770 /data/share

符号类型:

另一种修改文件权限的方式就是使用符号类型,owner/group/others 三种角色对应的符号表示是:owner(u), group(g), others(o),还有同时表示三种角色的符号:all(a)。read/write/execute 三种访问权限的符号表示是:read(r), write(w), execute(x)

基于用户角色和文件权限的符号表示,使用符号 +, -, = 为不同的用户角色添加、除去和设定不同的文件权限:

命令角色操作权限对象
chmodu/g/o/a+/-/=r/w/x文件或目录

例如,要使用 chmod 命令设置文件所有者权限为可读、可写、可执行,所属用户组和其他用户具有可读与执行的权限,即-rwxr-xr-x

chmod u=rwx,go=rx fliename

如果又要除去其他用户的可读与执行的权限是,即-rwxr-x--

chmod o-rx fliename

03 命令与文件权限


3.1 权限的意义

权限对于文件的意义:

  • r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;

  • w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);

  • x (execute):该文件具有可以被系统执行的权限。

权限对于目录的意义:

  • r (read contents in directory):表示具有读取目录结构列表的权限,即表示可以查询该目录下的文件名数据(ls 命令查看目录信息)。

  • w (modify contents of directory):表示具有向目录写入内容的权限,即可以修改目录的结构列表。例如,创建新的文件或目录、删除文件或目录、修改文件或目录的名称、移动文件或目录到其他位置等。

  • x (access directory):表示用户具有进入该目录成为工作目录的权限(cd 命令进入到目录中)。

3.2 权限的作用

文件权限限制了用户对文件或目录进行读取/创建/删除/修改等操作,我们进一步理解这操作命令是怎么和文件和目录权限对应起来的。

切换工作目录:

  • 可使用的命令:例如 cd 等变换工作目录的命令;

  • 目录所需权限:用户需要对该目录具有可执行权限 (x);如果还需要查阅目录结构信息,用户还需要可读权限(r)。

读取文件内容:

  • 可使用的命令:例如 cat,more,less,head,tail 等查阅命令

  • 目录所需权限:用户需要对工作目录(当前目录)具有可执行权限 (x);

  • 文件所需权限:用户需要对该文件具有可读权限(r);

修改文件内容:

  • 可使用的命令:例如 echo+重定向符号,vim 等文件修改命令

  • 目录所需权限:用户需要对工作目录(当前目录)具有可执行权限 (x);

  • 文件所需权限:用户需要对该文件具有可读、可写权限(r,w);

新建文件/目录:

  • 可使用的命令:例如 touch,mkdir 等文件或目录创建命令

  • 目录所需权限:用户需要对工作目录(当前目录)具有可执行权限 (x) 进入到该目录,还需要对工作目录具有可写权限 (w) 修改目录结构新建文件

运行可执行文件:

  • 可使用的命令:例如 ./,bash 等文件执行命令

  • 目录所需权限:用户需要对工作目录(当前目录)具有可执行权限 (x);

  • 文件所需权限:用户需要对该文件具有具有可执行权限 (x);


如果文章对你有帮助,欢迎一键三连 👍 ⭐️ 💬 。如果还能够点击关注,那真的是对我最大的鼓励 🔥 🔥 🔥 。


参考资料

一篇读懂 Linux 用户管理与操作

鸟哥的 Linux 私房菜 – Linux 的文件权限与目录配置-1

鸟哥的 Linux 私房菜 – Linux 的文件权限与目录配置-2

鸟哥的 Linux 私房菜 – Linux 账号管理-1

鸟哥的 Linux 私房菜 – Linux 账号管理-2

鸟哥的 Linux 私房菜 – 文件与目录管理

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023有哪些适合学生的蓝牙耳机?盘点四款适合学生的无线蓝牙耳机

随着时代的发展,人们更青睐于能够提升生活品质的产品。蓝牙耳机因为摆脱了线的束缚,使用体验会更好。接下来,我来给大家推荐几款适合学生用的无线蓝牙耳机,有需要的朋友可以当个参考。 一、南卡小音舱Lite2蓝牙耳机 参考价&…

【hello Linux】进程间通信——共享内存

目录 前言: 1. System V共享内存 1. 共享内存的理解 2. 共享内存的使用步骤 3. 共享内存的使用 1. 共享内存的创建 查看共享内存 2. 共享内存的释放 3. 共享内存的挂接 4. 共享内存的去挂接 4. 共享内存的使用示例 1. 两进程挂接与去挂接演示: 2. 两进程…

高性能:负载均衡

目录 什么是负载均衡 负载均衡分类 服务端负载均衡 服务端负载均衡——软硬件分类 服务端负载均衡——OSI模型分类 客户端负载均衡 负载均衡常见算法 七层负载均衡做法 DNS解析 反向代理 什么是负载均衡 将用户请求分摊(分流) 到不同的服务器上…

中移链控制台对接4A平台功能验证介绍

中移链控制台具备单独的注册登录页面,用户可通过页面注册或者用户管理功能模块进行添加用户,通过个人中心功能模块进行用户信息的修改和密码修改等操作,因业务要求,需要对中移链控制台的用户账号进行集中管理,统一由 4…

什么是分布式任务调度?怎样实现任务调度

通常任务调度的程序是集成在应用中的,比如:优惠卷服务中包括了定时发放优惠卷的的调度程序,结算服务中包括了定期生成报表的任务调度程序,由于采用分布式架构,一个服务往往会部署多个冗余实例来运行我们的业务&#xf…

C S S

目录 1.样式定义方式 1.1行内样式表 1.2内部样式表 1.3外部样式表 2.注解 3.选择器 3.1标签选择器 3.2 id选择器 3.3 类选择器 3.4 派生选择器 3.5 伪类选择器 链接伪类选择器: 位置伪类选择器: ​编辑 目标伪类选择器: 复合选…

Winform从入门到精通(37)——FolderBrowserDialog(史上最全)

文章目录 前言1、Name2、Description3、RootFolder4、SelectedPath5、ShowNewFolderButton前言 当需要获取一个可以通过用户自由选择路径的时候,这时候就需要FolderBrowserDialog控件 1、Name 获取FolderBrowserDialog对象 2、Description 用于指示对话框的描述,如下: …

Windows forfiles命令详解,Windows按时间搜索特定类型的文件。

「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 forfiles 一、结果输出格式二、按时间搜索三、搜索指定类型文件四、批量删除文件 forfile…

ATTCK v12版本战术介绍——防御规避(四)

一、引言 在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行、持久化、提权战术理论知识及实战研究、部分防御规避战术,本期我们为大家介绍ATT&CK 14项战术中防御规避战术第19-24种子技术,后续会介绍防御规避其他子技术&#xf…

【Unity URP】Rendering Debugger和可视化MipMap方案

写在前面 最近开始学习Unity性能优化,是结合了《Unity游戏优化》这本书和教程《Unity性能优化》第叁节——静态资源优化(3)——纹理的基础概念一起学习。在学习纹理优化部分时候遇到了问题,固定管线下Unity的Scene窗口有一个可视化Mipmap的渲染模式&…

PMP/高项 05-项目进度管理

项目进度管理 概念 项目进度管理(Schedule Management) 项目进度管理又叫项目工期管理(Duration Management)或项目的时间管理(Time Management) 是一种为管理项目按时完成项目所需的各个过程 进度管理过程 规划进度管理 定义活动 排列活动顺序 估算活…

【LeetCode】 309.最佳买卖股票时机含冷冻期

309.最佳买卖股票时机含冷冻期(中等) 思路 状态定义 一、很容易想到四种状态: a.今天买入;b.今天卖出;c.昨天卖出,今天处于冷冻期,无法进行操作;d.今天不操作,处于持有…

太酷了,库昊

昨天晚上凌晨3点30,勇士和国王的第7场比赛开打。 在上一局在勇士主场干翻勇士后,国王队的信心倍增,他们用自己的节奏一次次击溃勇士,特别是今天的前两节,国王能能够回应勇士的进球,防守也更有侵略性。今天不…

图扑数字孪生助力智慧冷链园区实现大数据实时监控

前言 近年来,业界学者及企业就智慧冷链物流展开深入研究,2010 年 IBM 发布的《智慧的未来供应链》研究报告中提出智慧供应链概念,并由此延伸出智慧物流概念,即智慧物流是以信息化为依托并广泛应用物联网、人工智能、大数据、云计…

【2023 年第十三届 MathorCup 高校数学建模挑战赛】D 题 航空安全风险分析和飞行技术评估问题 27页论文及代码

【2023 年第十三届 MathorCup 高校数学建模挑战赛】D 题 航空安全风险分析和飞行技术评估问题 27页论文及代码 1 题目 D 题 航空安全风险分析和飞行技术评估问题 飞行安全是民航运输业赖以生存和发展的基础。随着我国民航业的快速发展,针对飞行安全问题的研究显得…

巧用千寻位置GNSS软件| 桥台锥坡放样操作技巧

桥台锥坡放样是针对道路施工中,路桥结合部桥台圆锥形斜坡面进行放样设计的专用程序。本期将给大家介绍如何使用千寻位置GNSS软件实现快速完成桥台锥坡放样。 点击【测量】->【桥台锥坡放样】,从线路库中选择桥台经过的线路或是单独增加桥台 锥坡放样&…

QML动画分组(Grouped Animations)

通常使用的动画比一个属性的动画更加复杂。例如你想同时运行几个动画并把他们连接起来,或者在一个一个的运行,或者在两个动画之间执行一个脚本。动画分组提供了很好的帮助,作为命名建议可以叫做一组动画。有两种方法来分组:平行与…

【无功功率控制】连接到无限电网的小型风电场的无功功率控制(Simulink)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

jvm之字节码

写在前面 java字节码由单字节的指令(也叫做操作码)组成,但一个 byte 最多能够存储 256 个指令,够用吗?截止到目前是够的,因为指令的个数是200多一点,指令分为如下四类: 1:栈操作指令&#xff…

SmartEngine流程引擎之Custom模式

目录 一、为什么选用SmartEngine 二、各类流程引擎框架简单对比 1、流程设计器推荐 2、什么是BPMN 流程定义解释说明 三、SmartEngine之Custom实操 1、引入依赖 2、典型的初始化代码如下 3、节点如何流转以及流程实例存储问题 4、定义Delegation 关键类 一、为什么选用…