【Linux系统编程】第八弹---权限管理操作(中)

  ✨个人主页: 熬夜学编程的小林

💗系列专栏: 【C语言详解】 【数据结构详解】【C++详解】【Linux系统编程】

目录

1、修改文件权限的做法(二)

2、文件类型

3、可执行权限

4、创建文件/目录的默认权限

4.1、权限掩码

总结


前面一弹我们学习了用chmod+-来修改权限与有无权限的表示,这一弹再学习一种修改权限的方法与跟更多的权限知识。

1、修改文件权限的做法(二)

在第六弹我们学习了权限用八进制的表示方法,此处我们也可以通过八进制的方式来修改权限。

语法:

chmod 八进制数字 文件名   

注意:八进制数字由三个数组成,第一个代表拥有者权限,第二个代表所属组权限,第三个代表其他用户权限(上图为详细权限的八进制数)。

[lin@VMCentos7 ~]$ ll
----rwx--- 1 lin lin 12 Mar 27 19:51 1.txt
[lin@VMCentos7 ~]$ chmod 000 1.txt  # 将1.txt文件均改为无读写执行权限
[lin@VMCentos7 ~]$ ll
---------- 1 lin lin 12 Mar 27 19:51 1.txt
[lin@VMCentos7 ~]$ chmod 777 1.txt  # 将1.txt文件均改为有读写执行权限
[lin@VMCentos7 ~]$ ll
-rwxrwxrwx 1 lin lin 12 Mar 27 19:51 1.txt
[lin@VMCentos7 ~]$ chmod 544 1.txt  # 拥有者读执行权限 所属组读权限 其他用户读权限
[lin@VMCentos7 ~]$ ll
-r-xr--r-- 1 lin lin 12 Mar 27 19:51 1.txt

2、文件类型

我们知道Windows中是通过文件后缀名来区分文件类型的,可是Linux中不通过文件后缀名来区分文件类型(不代表不用后缀),那Linux中是如何区分文件类型的呢?Linux中常见的文件类型有哪些呢?

Linux中通过文件属性的第一位区分文件类型。常见的文件类型如下,此处我们通过命令来进一步验证。

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

[root@VMCentos7 lesson1]# touch file.txt # 创建一个普通文件(-)
[root@VMCentos7 lesson1]# mkdir dir      # 创建一个文件夹(d)
[root@VMCentos7 lesson1]# ll             # 查看当前目录文件详细信息
drwxr-xr-x 2 root root 4096 Mar 28 21:22 dir
-rw-r--r-- 1 root root    0 Mar 28 21:22 file.txt
[root@VMCentos7 lesson1]# ll /dev/vda    # 查看块设备文件
brw-rw---- 1 root disk 253, 0 Mar 20 23:33 /dev/vda
[root@VMCentos7 lesson1]# ll /dev/pts    # 查看字符设备文件
crw--w---- 1 root tty  136, 0 Mar 28 21:24 0
c--------- 1 root root   5, 2 Mar 20 23:28 ptmx
[root@VMCentos7 lesson1]# mkfifo pipe    # 创建一个管道文件
[root@VMCentos7 lesson1]# ll
drwxr-xr-x 2 root root 4096 Mar 28 21:22 dir
-rw-r--r-- 1 root root    0 Mar 28 21:22 file.txt
prw-r--r-- 1 root root    0 Mar 28 21:25 pipe
[root@VMCentos7 tmp]# ln -s /root/lesson1/file.txt a.link  # 创建一个软链接文件
[root@VMCentos7 tmp]# ll
total 0
lrwxrwxrwx 1 root root 22 Mar 28 21:30 a.link -> /root/lesson1/file.txt
[root@VMCentos7 tmp]# cat a.link # 查看软链接文件信息
hello Linux
[root@VMCentos7 tmp]# cd ../lesson1
[root@VMCentos7 lesson1]# cat file.txt
hello Linux

 补充知识:

1.ln 指令

功能:为某一个文件在另外一个位置建立一个同步的链接。

语法:ln [选项]… [-T]源文件 链接名 (第一种格式)

常见选项:-s, –symbolic 创建符号链接而不是硬链接,会出现 -> 符号。

2.mkfifo 指令

功能:创建一个允许进程进行通信的的命名管道文件。

语法:mkfifo [选项]… 文件名…

3、可执行权限

首先我们提出一个问题,我们进入目录需要什么权限???

我们直接通过命令进行验证!!!

[lin@VMCentos7 ~]$ mkdir dir  # 创建一个目录
[lin@VMCentos7 ~]$ ll
drwxrwxr-x 2 lin lin 4096 Mar 28 22:06 dir # 读写执行权限都有一定能进入目录
[lin@VMCentos7 ~]$ chmod u-w dir # 取消写权限
[lin@VMCentos7 ~]$ cd dir  # 能够进入目录
[lin@VMCentos7 dir]$ touch file.txt  # 取消写权限不能创建修改文件
touch: cannot touch 'file.txt': Permission denied[lin@VMCentos7 dir]$ cd .. # 回退到上级目录
[lin@VMCentos7 ~]$ chmod u-r dir  # 再取消读权限
[lin@VMCentos7 ~]$ cd dir  # 依旧能够进入目录
[lin@VMCentos7 dir]$ ls
ls: cannot open directory '.': Permission denied # 取消读权限可以进入目录,但是不能读目录里面的信息[lin@VMCentos7 dir]$ cd ..
[lin@VMCentos7 ~]$ chmod u-x dir  # 再取消执行权限
[lin@VMCentos7 ~]$ cd dir  # 不能进入目录
-bash: cd: dir: Permission denied

结论:

目录的w(写)权限:决定用户能否在指定的目录内新建,修改,删除文件。

目录的r(读)权限:决定用户能够查看指定目录的文件信息。

目录的x(执行)权限:决定用户能否进入目录。

了解了执行权限,那么可执行和执行权限的关系是什么呢???

同样的我们通过一个命令进行验证!!!

[lin@VMCentos7 ~]$ ls
test.c   # 首先创建一个test.c文件,在里面写入一些C语言代码
[lin@VMCentos7 ~]$ gcc test.c # 使用gcc进行编译,默认会生成a.out的可执行程序
[lin@VMCentos7 ~]$ ls
a.out   test.c            
[lin@VMCentos7 ~]$ ll
-rwxrwxr-x 1 lin lin 25792 Mar 28 22:24 a.out  # 有x权限
-rw-rw-r-- 1 lin lin    70 Mar 28 22:24 test.c
[lin@VMCentos7 ~]$ ./a.out # 运行该可执行程序
hello Linux
[lin@VMCentos7 ~]$ chmod u-x a.out # 取消x权限
[lin@VMCentos7 ~]$ ./a.out
-bash: ./a.out: Permission denied # 不能运行可执行程序

结论:

可执行 = 具有可执行权限 + 是一个可执行文件

gcc编译文件使a.out是一个可执行文件,加上有可执行权限,因此可以运行此程序,二者缺一不可。 

4、创建文件/目录的默认权限

通过下面命令来查看文件/目录的默认权限

[lin@VMCentos7 ~]$ mkdir dir1
[lin@VMCentos7 ~]$ mkdir dir2
[lin@VMCentos7 ~]$ mkdir dir3
[lin@VMCentos7 ~]$ touch file1
[lin@VMCentos7 ~]$ touch file2
[lin@VMCentos7 ~]$ touch file3
[lin@VMCentos7 ~]$ ll
drwxrwxr-x 2 lin lin  4096 Mar 28 22:54 dir1
drwxrwxr-x 2 lin lin  4096 Mar 28 22:55 dir2
drwxrwxr-x 2 lin lin  4096 Mar 28 22:55 dir3
-rw-rw-r-- 1 lin lin     0 Mar 28 22:55 file1
-rw-rw-r-- 1 lin lin     0 Mar 28 22:55 file2
-rw-rw-r-- 1 lin lin     0 Mar 28 22:55 file3

通过上面命令我们可以看到,三个文件的默认权限是一样的(八进制表示为664),三个目录的默认权限(八进制表示为775)也是一样的,但是这是为什么呢? 

此处需要知道,Linux对于文件/目录有起始权限:

创建的普通文件,起始权限是:0666,去掉x的

创建的目录文件,起始权限是:0777,包含x的

4.1、权限掩码

umask 指令

功能:

查看或修改文件掩码

语法:

umask [权限值]    查看则输入umask  修改则在后面输入要修改的数值。

在创建文件的时候,要在起始权限中,过滤umask中出现的权限。

假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask

说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002(掩码不同也是正常的)。


举例:

[lin@VMCentos7 ~]$ umask
0002
[lin@VMCentos7 ~]$ ll
drwxrwxr-x 2 lin lin  4096 Mar 28 22:54 dir1
drwxrwxr-x 2 lin lin  4096 Mar 28 22:55 dir2
drwxrwxr-x 2 lin lin  4096 Mar 28 22:55 dir3
-rw-rw-r-- 1 lin lin     0 Mar 28 22:55 file1
-rw-rw-r-- 1 lin lin     0 Mar 28 22:55 file2
-rw-rw-r-- 1 lin lin     0 Mar 28 22:55 file3

[lin@VMCentos7 ~]$ umask 0111  # 修改掩码
[lin@VMCentos7 ~]$ umask       # 查看掩码
0111
[lin@VMCentos7 ~]$ touch file0
[lin@VMCentos7 ~]$ mkdir dir0
[lin@VMCentos7 ~]$ ll
drw-rw-rw- 2 lin lin  4096 Mar 28 23:18 dir0
-rw-rw-rw- 1 lin lin     0 Mar 28 23:17 file0

 通过上面的命令可以看到掩码改变之后,创建文件和目录的默认权限也跟着改变了,因此是umask影响我们的默认权限

总结


本篇博客就结束啦,谢谢大家的观看,如果公主少年们有好的建议可以留言喔,谢谢大家啦!

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

git 重命名文件,提交后,此文件的提交记录丢失

零、问题现象: 文件重命名后,提交到 git 仓库,发现重命名操作 变成 删除旧文件,新增一个新文件,原来文件的提交记录丢失,看不到了。 一、正确的重命名提交方法 1.1、 先执行add命令来将修改内容后的文件…

校园论坛圈子,校园跑腿小程序,2024 一款功能强大校园综合服务小程序开源源码

目的 本课题主要目标是设计并能够实现一个基于微信校园跑腿小程序系统,前台用户使用小程序发布跑腿任何和接跑腿任务,系统基于TP6uni-app框架开发;客户移动端采用uni-app开发,管理后台TH6开发;通过后台管理跑腿的用户、查看跑腿信…

2024年最佳软件测试工具40强清单

什么是测试工具 软件测试工具是指那些支持从计划、需求收集、构建创建、测试执行、缺陷记录到测试分析等各种测试活动的产品。这些工具主要用于检测软件的稳定性、彻底性以及其他性能参数。 市场上有大量的软件测试工具,众多选择使得难以确定最适合你项目的测试工具…

前端css中table表格的属性使用

前端css中table表格的属性使用 一、前言二、常见的表格属性1.边框的样式2.布局和对齐3.间距和填充4.背景和颜色5.字体的样式6.边框的圆角 三、简单的表格,例子11.源码12.源码1效果截图 四、给表格添加动画效果,例子21.源码22.源码2的运行效果 五、结语六…

备考2024年小学生古诗文大会:吃透10道历年真题和知识点(持续)

对上海小学生的小升初和各种评优争章来说,语文、数学、英语的含金量较高的证书还是很有价值和帮助的。对于语文类的竞赛,小学生古诗文大会和汉字小达人通常是必不可少的,因为这两个针对性强,而且具有很强的上海本地特色。 根据往…

基于智能推荐的校园兼职招聘平台

3协同过滤算法简介 目前,推荐算法有很多种,可以应用于日常生活的许多领域,对大量数据进行处理和分析,然后进行分类。它将显示用户可能感兴趣的内容,这是推荐算法的主要功能之一[1]。 协同过滤算法通常包括两类&#…

ARP 攻击神器:ARP Spoof 保姆级教程

一、介绍 arpspoof是一种网络工具,用于进行ARP欺骗攻击。它允许攻击者伪造网络设备的MAC地址,以欺骗其他设备,并截获其通信。arpspoof工具通常用于网络渗透测试和安全评估,以测试网络的安全性和漏洞。 以下是arpspoof工具的一些…

数智亚运,为什么需要智能电子桌牌?

近日,杭州亚运会博物馆正式对公众开放,深度还原了杭州从申请办、筹办至举办亚运会的各个精彩历程。馆内有“亚运与杭州”、“亚运与亚洲”“亚运与未来”三大板块展示区,展示了大量亚运会使用过的实物,还有当时引人注目的数字科技…

遥测终端赋能水库泄洪监测预警,筑牢度汛安全防线!

4月10日,水利部召开水库安全度汛视频会议。会议要求着力强化水库防洪“四预”措施,加快构建雨水情监测预报“三道防线”,完善预警信息发布机制,推进数字孪生水利工程建设,为科学调度指挥决策提供支持。强调坚决牢牢守住…

大模型应用RAG系列(1)初识RAG

题外话 之前我们在讲大模型的应用方向和架构时,有提到RAG、Agent、Fine-Tune。在作者写大模型专题的文章时,也是边学习,边梳理,边总结。在这个过程中,大模型在各个方向都不断地快速发展,对应的paper、理论…

25计算机考研院校数据分析 | 上海交通大学

上海交通大学电子信息与电气工程学院成立于2001年12月,其前身可湖源至百年前的电机专科,具有中国电气工程师“摇篮”之美称。50年代根据学科发展需要分为电工与计算机科学系(三系)和电子工程系(四系)。1985年,三系和四系合并,成立…

机器学习之sklearn基础教程

ChatGPT Scikit-learn (简称sklearn) 是一个非常受欢迎的Python机器学习库。它包含了从数据预处理到训练模型的各种工具。下面是一个关于如何使用sklearn进行机器学习的基础教程。 1. 安装和导入sklearn库 首先,你需要安装sklearn库(如果你还没有安装的…

嬴图| ISO/IEC-GQL国际图语言标准发布,图技术开启新纪元

GQL作为继SQL之后的第二个数据库查询语言国际标准,近日正式发布。这标志着图技术开启新纪元——图时代即将到来! 同时,这也预示着将有越来越多的组织采用“图”来解决各种复杂问题,更意味着SQL系统与负载将逐渐转向GQL&#xff0…

Fork for Mac v2.42 激活版 Git客户端

Fork for Mac是一款运行在Mac平台上的Git客户端,Fork Mac版具备基本的取、推、提交、修改、创建和删除分支和标签、创建和删除远程备份等功能,还有实用的差异查看器,你可以通过清晰的视图快速发现源代码中的更改。 Fork for Mac v2.42 激活版…

Java八股文4-Linux篇

Linux篇 Linux中常见命令:Linux常见命令 1.free命令-查看内存状态 free命令用于显示内存状态,它可以提供关于系统内存使用情况的详细信息。这个命令会显示出内存的使用情况,包括实体内存、虚拟的交换文件内存、共享内存区段,以及…

【网盘源码】百度云盘手动cookie获取,添加到扫码系统管理平台。

一.获取cookie步骤 1.谷歌浏览器选择开发者模式。 2.选择网路,过滤接口main 3.选择request head,cookie列表里面可查看二.添加到管理平台。 1.登录管理平台,输入账户和密码 2.选择账户设置,添加cookie。 4.复制卡密链接&#xff…

k8s calico vxlan式详解

之前的文章讲了k8s ipip模式的使用以及流量路径,本篇文章主要是来讲解一下vxlan 模式下pod 流量是如何通信的。 一、ipip模式转vxlan 修改calico backend参数 将calico_backend参数由bird设置为vxlan,因为vxlan部署不使用bgp 修改calico controllers的configmap…

【GitHub】2FA认证(双重身份验证)

GitHub 2FA认证(双重身份验证) 写在最前面一、使用 TOTP 应用程序配置双2FA(双因素身份验证)1. 介绍2. github3. 认证 官网介绍小结 & 补充 :权限不足or验证码错误问题 🌈你好呀!我是 是Yu欸…

统一SQL 支持Oracle CHAR和VARCHAR2 (size BYTE|CHAR)转换

统一SQL介绍 https://www.light-pg.com/docs/LTSQL/current/index.html 源和目标 源数据库:Oracle 目标数据库:Postgresql,TDSQL-MySQL,达梦8,LightDB-Oracle 操作目标 在Oracle中的CHAR和VARCHAR2数据类型&…

3月8日是星期六

突然有查询特殊条件日期的需求。 <html> <title>3月8日是星期六</title> <center> <h1 id"h1"></h1> <div id"div"></div> </center> <script> var weekday [星期日, 星期一, 星期二, 星期…