当前位置: 首页 > news >正文

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

封面

🔥个人主页:爱和冰阔乐
📚专栏传送门:《数据结构与算法》 、【C++】 、【Linux】
🐶学习方向:C++方向学习爱好者
⭐人生格言:得知坦然 ,失之淡然

在这里插入图片描述


🏠博主简介
在这里插入图片描述

文章目录

  • 前言
  • 一、shell命令以及运行原理
  • 二、Linux的用户
  • 三、权限的概念
    • 3.1 角色分类及其作用
    • 3.2 属性
  • 四、文件访问权限的相关设置方法
    • 4.1 chmod 指令修改属性
    • 4.2 八进制修改属性
    • 4.3 chown /chgrp 指令之修改角色
  • 五、目录权限的管理
    • 5.1 进入目录需要的权限
    • 5.2 r与w权限对目录的影响
    • 5.3 多用户互相隔离
    • 5.4 缺省权限
    • 5.5 粘滞位——t
  • 总结


前言

本文我们来聊聊 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
#给所有角色添加读的权限使用a
chmod 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(如果先确定你是拥有者,那么只查看拥有者的权限,只确定一次,)

pwd whoami

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");return 0;
}
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
#所有角色的读权限加上了
chmod 444 cmd

在这里插入图片描述在这里插入图片描述

4.3 chown /chgrp 指令之修改角色

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

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

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

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

chown root cmd

在这里插入图片描述
系统默认不允许我们把文件给别人,是合理的

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

chown hxx1 hello.txt
sudo chown  hxx1 hello.txt

在这里插入图片描述``

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

#一次性修改拥有者和所属组:拥有者:所属组
sudo chown root:root cmd
#只修改所属组还是使用chgrp
sudo chgrp 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
#但是可以创建
touch 1.txt

在这里插入图片描述
在这里插入图片描述

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

chmod u-w lesson
cd lesson
touch 2.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 ),则该⽬录下的文件只能由

  1. 超级管理员删除
  2. 该⽬录的所有者删除
  3. 该⽂件的所有者删除

总结

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

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

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

http://www.dtcms.com/a/535795.html

相关文章:

  • 等离激元光催化:从实验室突破到碳中和战场的技术革命
  • 2025年6月全国大学英语四级真题试卷、听力音频及答案解析PDF电子版(三套全)
  • CAS:1628029-06-0,UV-Tracer-炔-琥珀酰亚胺酯,光学特性
  • 中国建设银行网站怎么登录不上去湖北黄石域名注册网站建设
  • 制作网站心得如何建微信公众号平台
  • Redis黑马点评 分布式锁
  • Lua-function的常见表现形式
  • 免费com域名网站提升wordpress性能的插件
  • 面试150——堆
  • shell实战-跳板机和测试主机是否在线
  • 精美课程表软件,课时科目灵活管理
  • MestReNova 16下载安装教程(附安装包)
  • 前端开发中的特殊字符
  • 【超音速专利 CN119515970A】一种适用于电池极片的边缘点距离处理方法、系统及平台
  • CANoe基础讲解04:掌握CANoe Graphics窗口(二)
  • 外国域名注册很多网站制作灯笼的手工做法步骤
  • Spring MVC配置解决跨域请求
  • 从一个nginx镜像启动的容器中分出部分location配置到另外一个nginx容器
  • 探秘仓颉:当函数式编程遇见面向对象王国,当协程风暴席卷并发荒原——从基础语法到实战测试联动的多维编程奇遇记
  • (场景题)怎么实现数据的批量插入?
  • 网站建设与管理案例...建企业网站一般需要多少钱
  • 使用el-table时,某个字段对应多个key值,如何进行展示
  • 空间数据采集与管理(如何使用ArcGIS Pro和Python进行空间数据的管理,确保数据采集和组织的高效性和准确性)
  • WHAT - React Compiler Directives 让手动优化变成过去式
  • API请求关键指标全解:Apipost视角下,从连接到性能的全景分析
  • HTML 的底层原理
  • 布吉做网站的公司关于网站建设的图片
  • 服务器运维(六)网站访问分析统计——东方仙化神期
  • 【Docker】定制化构建一个可以运行GaussDB的kylinv10sp3系统的docker镜像
  • 5分钟搭建云IDE!CodeServer+cpolar打造跨设备开发工作站