【Linux】文件归属与迁移:chown修改拥有者、chgrp调整所属组,解决团队协作中的权限交接问题

【Linux】文件归属与迁移:chown修改拥有者、chgrp调整所属组,解决团队协作中的权限交接问题
封面
🔥个人主页:爱和冰阔乐
📚专栏传送门:《数据结构与算法》【C++】【Linux】
🐶学习方向:C++方向学习爱好者
⭐人生格言:得知坦然 ,失之淡然
在这里插入图片描述

🏠博主简介

在这里插入图片描述

文章目录


前言

本文我们来聊聊 Linux 系统中的权限问题,让我们明白 Linux 中的权限是什么,为什么要有权限,以及怎么操作我们的权限,我们一起来看看吧!!

一、shell命令以及运行原理

Linux严格意义上说的是⼀个操作系统,我们称之为“核心(kernel)“,但我们⼀般用户,不能直接使⽤kernel。⽽是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使⽤kernel?

从技术⻆度,Shell的最简单定义:命令⾏解释器(command Interpreter)主要包含:

  • 将使⽤者的命令翻译给核心(kernel)处理
  • 同时,将核⼼的处理结果翻译给使⽤者

对⽐windows GUI,我们操作windows 不是直接操作windows内核,⽽是通过图形接⼝,点击,从⽽完成我们的操作(⽐如进⼊D盘的操作,我们通常是双击D盘盘符.或者运⾏起来⼀个应⽤程序)(图形窗口是外壳

shell 对于Linux,有相同的作⽤,主要是对我们的指令进⾏解析,解析指令给Linux内核。反馈结果在通过内核运⾏出结果,通过shell解析给用户(命令行是外壳

举例:
帮助理解:如果说你是⼀个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的且有让你⼼动的MM⼩花。你看上了⼩花,但是有不好意思直接表⽩,那就让你你家⼈找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给⼩花,⽽我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使⽤的bash(bash是属于shell的一种)

注意:在本故事中,小花就是操作系统,你就是用户,因为用户不擅长和操作系统内核打交道,那么王婆就是外壳shell,因此如果用户输入错误指令是通过shell进行返回给用户的

总结:
使用外壳程序的原因便是:
1.方便用户操作
2.同时为防止用户输入非法指令,外壳程序会拦住指令不传给内核,变向的保护了内核

二、Linux的用户

Linux下有两种用户:超级用户(root)、普通用户

  • 超级用户:可以再linux系统下做任何事情,不受限制
  • 普通用户: 在linux下做有限的事情
  • 超级用户的命令提⽰符是“#”,普通用户命令提⽰符是“$”。

命令: su [用户名] / su -

功能: 切换用户

例如,要从root用户切换到普通用户user,则使⽤ su user。
要从普通用户user切换到root⽤⼾则使⽤ su root(root可以省略),此时系统会提⽰输⼊root用户的⼝令。

注意:su命令不会让用户重新登录,只是身份的切换,即不影响当前所处的目录下,su -则是以root/user身份重新登录,即用户所处的当前路径发生变化

热键: ctrl +d

功能: 退出当前用户,回到原用户,等同于输入exit

在这里插入图片描述

命令:sudo

作用:用来进行指定的短暂提权的

作用:安装软件,安装到系统时,需要管理员root权限——安装的所有程序其实只安装了一份,允许大家同时使用

在sudo提权时输入的是普通用户的密码,那么代表人人都是root?

举例:

在这里插入图片描述


那肯定不是!我们需要在root权限中,进行 vim /etc/sudoers将普通用户添加到sudoers中,输入自己的密码是为了验证 当前操作是否为该用户本人发起,这里不做仔细介绍,在后续vim使用的文章会有详细介绍

三、权限的概念

权限的本质是:能或者不能做什么事情

权限的作用:
1.控制用户的行为,防止错误的发生,如法律
2.权限首先限制的是角色(人)
3.权限要求目标必须具备对应的属性(如:在牛客上看不了电影,其没有视频播放的属性)

总结·:权限= 角色 + 目标权限属性

Linux下一切问题,面对的都是文件,而文件涉及到的权限属性便是:读,写,执行

3.1 角色分类及其作用

角色分为两类:
1.拥有者(创建的 和 属于者)
2 所属组(⽂件和⽂件⽬录的所有者所在的组的⽤⼾)
3 other(在Linux中不被记录)

在这里插入图片描述

注意:用户账号(root,普通用户)与角色并不冲突,把用户账号理解为张三(具体的人),其扮演的角色是校长,两者并不冲突,是互相补充的

所属组:更精细化的权限管理,首先要有更精细化的身份角色

帮助理解:程序员A和B在同一家公司的不同组中,各自开发相同的程序,若A开发成功则公司奖励A,如果在开发过程,属于A组的组长想看A写的代码,而Linux的角色中只有拥有者和other概念,那么只能把权限公开给other,而组长和B均属于other范围,那么便会导致内容泄密,因此就需要所属组只开放权限给其组内成员

3.2 属性

对于任意一个文件必定包括:读,写,执行,这三个属性,在Linux中的读是 r ,写是 wx 是可执行

在这里插入图片描述

权限位:由于每个权限位均有三个字符,在world.txt文件中,如果允许读 / 写 /执行便出现对应的 r / w / x,不允许便是 -,注意第一个只能是读,第二个是写,不能颠倒顺序

到这,我们便学完了权限的角色和属性,我们便可以小试牛刀来描述下world.txt的权限信息是什么了

该文件的拥有者是root,该文件的拥有者具备读和写文件但不能执行,该文件的所属组是root,其可以对当前文件进行读,不能写和执行,other只能进行读

四、文件访问权限的相关设置方法

4.1 chmod 指令修改属性

功能: 设置⽂件的访问权限

格式: chmod [参数] 权限 ⽂件名

常用选项:

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

chmod命令权限值的格式:

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

实例:
▪ chmod u+w /home/abc.txt
▪ chmod o-x /home/abc.txt
▪ chmod a=x /home/abc.txt• 三位8进制数字 ◦
实例:
▪ chmod 664 /home/abc.txt
▪ chmod 640 /home/abc.txt

修改权限无非是修改属性和角色,那么我们先进行修改其属性

touch my.txt #删除拥有者的读chmod u-r my.txt #添加拥有者读,写,可执行权限chmod u+rwx my.txt #删除所属组的读写权限chmod g-rw my.txt #给other加上写的权限chmod o+w my.txt #进行多个角色的权限修改chmod u-rw,g+rw,o+r my.txt #给所有角色添加读的权限使用achmod a+r my.txt 
在这里插入图片描述


在这里插入图片描述

1.用户只能更改自己的文件权限,如果是root账号便可以改旗下的普通用户权限

在这里插入图片描述

2.如果没有权限,系统会拒绝让我们访问

举例:
去掉文件的读的权限,但是拥有写的权限

touch ll.txt #删除其读的权限chmod u-r ll.txt cat ll.txt echo"hello Linux">ll.txt echo"hello Linux">> ll.txt # 删除其写入权限chmod u-w ll.txt echo"hello Linux">>ll.txt 
在这里插入图片描述


可以写

在这里插入图片描述


最后再去掉其的写入权限

在这里插入图片描述

3.确定权限的信息的时候,系统会先确定用户是谁?拥有者,所属组还是other?

在Centos下,用户角色确定只确定一次,通过判文件的拥有者/所属组和用户是谁进行匹配,顺序是:依次查拥有者,所属组,other(如果先确定你是拥有者,那么只查看拥有者的权限,只确定一次,)

pwdwhoami

4.rootd用户的权限不受权限的约束

5.理解可执行程序的深层含义
举例:
1.自身不可被执行,但拥有可执行权限

touch hello.txt ll echo"你好">>hello.txt chmod u+x hello.txt ./hello.txt 
在这里插入图片描述


2.自身可以被执行,但没有可执行权限

touch cmd.c nano cmd.c #include<stdio.h> int main(){ printf("hello");return0;} gcc cmd.c -o cmd chmod u-x cmd.c ./cmd.c 
在这里插入图片描述

总结:中国有句古话说得好:给你机会你不中用,从中我们便可以看出,想要实现某个事情,需要机会+能力,放在权限里便是,给了该文件的可执行权限,只是表示该文件将来可以被执行,但不代表该文件本身是个可执行文件,因此可执行代表是拥有可执行权限并且本身可以被执行

注意:
1.可执行权限不等于文件可以执行(取决于是不是二进制的可执行文件)
2. 给空文件可执行权限,但其自身是不可被执行的,需要注意的是在centos环境下没有报错的原因是:Bash 把它当作空脚本解析时,因无错误而成功退出,所以没有报错

4.2 八进制修改属性

下面我们通过把拥有者,所属组,其他各自对应的3个字符换算成十进制,看做为八进制(因为其最大的111进行换算是7)进行修改属性,因此以后想要修改属性除了上述的u/g/o方法外,还可以使用八进制

举例:

#拥有者,所属组,其他的读写,可执行权限均被限制chmod ooo cmd #所有角色的读权限加上了chmod444 cmd 
在这里插入图片描述
在这里插入图片描述

4.3 chown /chgrp 指令之修改角色

chown:
功能
:修改⽂件的拥有者

格式:chown [参数] 用户名 ⽂件名

chgrp:
功能:
修改⽂件或⽬录的所属组
格式:chgrp [参数] 用户组名⽂件名
常⽤选项:-R 递归修改⽂件或⽬录的所属组

举例:
将自己的文件交给别人

chown root cmd 
在这里插入图片描述


系统默认不允许我们把文件给别人,是合理的

如果想要给别人则必须提高权限,如root

chown hxx1 hello.txt sudochown hxx1 hello.txt 
在这里插入图片描述

``

可以不用chgrp,只用chown进行修改拥有者和所属组

#一次性修改拥有者和所属组:拥有者:所属组sudochown root:root cmd #只修改所属组还是使用chgrpsudochgrp root cmd 

五、目录权限的管理

5.1 进入目录需要的权限

如果我们想要进入一个目录需要什么权限?

先将文件和用户进行匹配,发现角色为拥有者

whoami
在这里插入图片描述


1.先删除拥有者的读权限,其并没有影响进入目录的权限

chmod u-r lesson cd lesson 
在这里插入图片描述


2.删除写的权限,不影响进入目录

chmod u-w lesson cd lesson 
在这里插入图片描述


3.删除可执行的权限,影响进入目录

chmod u-x lesson cd lesson 
在这里插入图片描述

5.2 r与w权限对目录的影响

那么读和写对于目录有什么意义?

删除读的权限,则无法查看该目录的内容

chmod u-r lesson cd lesson ll #但是可以创建touch1.txt 
在这里插入图片描述


在这里插入图片描述

如果对目录没有w,无法在指定目录内部新建文件

chmod u-w lesson cd lesson touch2.txt 
在这里插入图片描述

默认情况下,我们新建的目录,一般情况下要求rwx权限都要有

5.3 多用户互相隔离

Linux下建立许多个互相不影响的用户,为什么?
在LInux系统中每建立的普通账号是放在/home目录下新建一个特定用户名命名的文件夹:/home/hxx1

hxx1文件夹的拥有者与所属者均为我自己hxx1,只对我自己开放所有权限,对于所属组和other权限是关闭的,那么意味着任何用户无法进入其他用户的家目录,因此用户便可以在权限上实现隔离

在这里插入图片描述


注意:只有root可以修改

5.4 缺省权限

为什么默认(缺省)权限是我们看到的样子?

在这里插入图片描述

对于普通文件来讲:起始权限是从666开始的,默认不带可执行权限

对于目录文件来讲:起始权限是从777开始的,默认携带x

但是在我们自己创建的目录和文件,却和我上述的示例不同,这是因为系统默认会存在一个叫权限掩码的概念

umask
在这里插入图片描述


权限掩码的第一个0不用考虑(与用户有关),002为八进制,对应的二进制便是(000,000,010)

公式:最终权限=起始权限&(~umask)

我们以目录的777为例,其对应的二进制便是 111 111 111,umask为 000 000 010,再对其取反为:111 111 101,再对两者按位与为:111 111 101,对应的八进制为775,因此我们创建的hxx目录为775

umask的目的是什么?

希望凡是在umask中出现的权限,都不应该在最终权限中出现

为什么要有umask?
1.解决 “默认权限不可控” 问题:默认情况下,系统会按固定规则(如文件 666、目录 777)分配权限,无法提前调整;而umask 允许用户 / 系统在创建文件前预设 “权限掩码”,通过 “最大默认权限 - umask” 自动计算最终权限
2.特殊情况下,通过配置umask就可以控制文件的默认权限,让我们的代码是可控的

那么我们怎么修改umask?

umask 0777 mkdir ll 
在这里插入图片描述

5.5 粘滞位——t

一个文件是否能被删除,与文件本身无关,与文件所处的目录权限有关(与文件所处的目录的w权限有关),即毁灭你与你何干

问题:那么如果两个用户之间要进行文件级别的协作,因此协作的文件不能放在任何一个私人账号里,可以放在tmp路径下,文件/目录是共享的,放在根目录/temp下,其权限放开了other的w权限,因此是可以删除文件的,但是我们并不想非文件的拥有者删除对应的文件

在这里插入图片描述


需求:任何一个人都能在共享目录下新建文件,但是不能让非文件拥有者删除,因此Linux中创建了一个新的权限标志位:t(粘滞位),

chmod +t temp_backup rm whb.txt 
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


由于temp已经添加了粘滞位,我们想要创建共享的文件时,只需在这里面创建即可

总结:
特征:只能给需要共享的目录添加粘滞位
当⼀个⽬录被设置为"粘滞位"(⽤chmod +t ),则该⽬录下的文件只能由超级管理员删除该⽬录的所有者删除该⽂件的所有者删除

总结

以上便是Linux的权限的介绍,学完本文,一定要注意我们文件和目录的权限设置及其保护,可千万别破坏了自己的重要文件哦!!!

坚持到这里,已经很棒啦,希望读完本文可以帮读者大大更好了解Linux的内容!!!如果喜欢本文的可以给博主点点免费的攒攒,你们的支持就是我前进的动力🎆

资源分享:Linux26个重要指令的介绍

Read more

EnvPilot:一款基于 Rust 的跨平台环境变量神器,一键搞定 Windows/Linux 环境配置!

EnvPilot:一款基于 Rust 的跨平台环境变量神器,一键搞定 Windows/Linux 环境配置!

文章目录 * 1. 项目介绍🎯 * 1.1. 什么是 EnvPilot? * 1.2. 为什么选择 EnvPilot? * 2. 核心优势:四大痛点全部解决!💪 * ✅ 痛点一:添加不生效?已修复! * ✅ 痛点二:删除删不掉?已修复! * ✅ 痛点三:PATH 清理失效?已修复! * ✅ 痛点四:误操作无法恢复?已解决! * 3. 支持的开发环境🛠️ * 4. 详细使用教程📖 * 4.1. Windows 平台使用教程 * 1️⃣ 下载安装 * 2️⃣ 配置环境变量 * 3️⃣ 清除环境变量 * 4.2. Linux 平台使用教程 * 1️⃣ 从源码编译 * 2️⃣ 配置环境变量 * 3️

By Ne0inhk
Oracle 替换工程实践深度解析:金仓数据库破解 PL/SQL 兼容与跨交易日数据一致性核心难题

Oracle 替换工程实践深度解析:金仓数据库破解 PL/SQL 兼容与跨交易日数据一致性核心难题

Oracle替换工程实践深度解析:金仓数据库破解PL/SQL兼容与跨交易日数据一致性核心难题 前言 做金融、运营商等行业的数据库架构师和开发同学,大概率都被Oracle迁移的问题折腾过。国产化替代的大趋势下,“去O”已经不是选不选的问题,而是怎么落地的问题——但真正动手才发现,核心系统里动辄几十万行的PL/SQL代码、7×24小时不间断的交易业务、跨交易日的账务清算逻辑,每一个都是绕不开的硬骨头。很多企业明明投入了大量人力物力,却卡在兼容性问题上反复返工,或是因为数据一致性没保障,不敢把核心业务切到新库,最后导致迁移项目一拖再拖。 其实“去O”的核心痛点就两个:一是PL/SQL函数、存储过程这些业务逻辑载体的无缝迁移,毕竟重写代码不仅成本高,还容易引入新Bug;二是金融、运营商核心系统的事务保障,尤其是跨交易日的账务处理、批量清算,数据差一分一毫都可能引发重大业务风险。而国产数据库里,电科金仓的KingbaseES(KES)算是把这两个痛点解决到了极致的产品——不仅能实现PL/SQL的“零改造”迁移,还能完美保障跨交易日的数据一致性和事务完整性,更有全流程的迁移工具链保驾护航。

By Ne0inhk
第五届“长城杯”初赛 2025 Web WP 全

第五届“长城杯”初赛 2025 Web WP 全

文曲签学 上来给了一个 寻词器 的页面,然后根据提示 要进入调试模式 查看网页源码, 看到 通过长按Fn即可进入调试模式 进入调试模式 根据页面提示, 输入 #help,查看可以执行的指令 #list 查看笔记列表 (为了方便输入指令,后续就直接在BP中操作了) 看到 提示 flag在根目录下. #about 提示要关注公众号 双写绕过的,目录穿越读取flag #read ....//....//....//....//flag 成功获取flag. EZ_upload 是一道文件上传题目, 网站只有一个文件上传点.任意上传一个文件后显示了源码. 接受 文件后,对文件名做了简单的过滤. 然后把文件保存在了/tmp目录下,并且对文件执行了tar解包的操作. 文件上传,一般就是要写入 webshell. 但是文件都保存在了/tmp下,所以我们要想办法修改文件的保存位置. 题目隐藏知识 ✅ 关键点:tar 解压符号链接时,默认会保留符号链接(

By Ne0inhk
Flutter 三方库 m_list 的鸿蒙化适配指南 - 实现具备高阶谓词过滤与异步分片的增强列表处理、支持端侧集合数据的高效变换与分布式序列化实战

Flutter 三方库 m_list 的鸿蒙化适配指南 - 实现具备高阶谓词过滤与异步分片的增强列表处理、支持端侧集合数据的高效变换与分布式序列化实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 m_list 的鸿蒙化适配指南 - 实现具备高阶谓词过滤与异步分片的增强列表处理、支持端侧集合数据的高效变换与分布式序列化实战 前言 在进行 Flutter for OpenHarmony 的大规模数据处理、商品列表分析或复杂的日志检索应用开发时,原生 Dart 的 List 虽然提供了基础的集合操作,但在处理分页加载、深度克隆、频率统计以及复杂的并集/交集运算时,代码往往会变得碎片化。m_list 是一款专为高效列表操作设计的增强库。本文将探讨如何在鸿蒙端构建极致、清爽的集合处理模型。 一、原直观解析 / 概念介绍 1.1 基础原理 m_list 建立在一套强大的“谓词逻辑(Predicate Logic)”和“链式变换”之上。

By Ne0inhk