Linux权限(umask掩码)

2024-04-14 22:44
文章标签 linux 权限 掩码 umask

本文主要是介绍Linux权限(umask掩码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

强烈建议全文阅读!

1、外壳程序

2、文件权限

1、快速修改权限

2、修改权限的第二种方式:

3、关于目录文件权限,umask掩码

4、目录添加粘滞位


1、外壳程序

外壳是什么?
用户->外壳->内核(kernel)

为什么有外壳?
1、user不擅长os
2、判断user的comande,保护内核

怎么办?
bash创建一个子进程(shell不能挂)
不是bash直接去执行用户的命令
而是子进程完成
bash是一款具体的shell程序

为什么有权限?因为要拦住一部分人,有些人不能,有些人能
权限的本质:和人无关,只和角色有关;同时和事物属性有关

2、文件权限


权限:人(角色)+事物属性
不是拥有者、所属者,就是other

文件属性第一列:10个字符
第一个字符:文件类型,-普通文件、d目录文件

文件属性:一般有三种类型:
读r、
写w、
x可执行权限

三三为一组,分别对应:拥有者、所属组、other。这三种角色所对应的权限
因为这三种角色一定是具体的人来承担,而这个人只能是root用户或者普通用户
所以,具体的来说,权限就是具体的角色对应具体的文件
权限 = 用户角色(具体的人) + 文件权限属性
excute:执行

rwx:
r:是否具有可读权限
w:是否具有去写权限
x:是否具有可执行权限
如果一个文件有对应的权限,就显示对应的字母;没有权限就对应-
三者字母的位置是固定死的

因此,我们描述权限,要具体说明:那个人对那个文件有那些权限

1、快速修改权限


文件拥有者/root可以改
chmod  u-r test.txt #对usr拥有者的test.txt减去r读权限
chmod  g-r test.txt #对usr所属组的test.txt减去r读权限
chmod  o-r test.txt #对usr其他人的test.txt减去r读权限
chmod a-rmx text.txt #对三个拥有者的test.txt同时减去r读权限
如果是加权限,将-换+即可

权限存在的意义:保护普通用户的文件
对用户身份识别只识别一次
如果不是owner,再去匹配所属组
匹配成功就不再往后匹配,如果匹配不成功,就会再往后匹配
修改用户拥有者/所属组需要用root
chgrp/chown:改变所属组/拥有者

只有root有权限可以改变拥有者
而普通用户是没有权限的,这个时候可以使用sudo
sodu/su:强制提升权限(短暂的变成root)

同时修改own和grp:chown/chgrp name1:name2 filename

现在可以修改文件的权限,也可以修改文件的拥有和所属

2、修改权限的第二种方式:


每一个角色的权限对应的是rwx三位,分别对应读、写、执行。
如果有权限,为1
没有权限,为0
那么:
---:000(0)
r--就是:100(4)
rw-就是:110(6)
rwx就是:111(7)
所有,如果我要修改三个角色的权限,设置为rwx,可以直接chmod 777 filename #意味着将三个角色全部设置为有权限

wimdows依靠文件后缀名管理区别文件
到那时Linux不依靠文件后缀名管理文件 
那么Linux通过什么管理文件?
ls-l 文件类型第一列就是文件的属性
Linux文件类型:
-:普通文件、文本文件、可执行程序、库等都叫做普通文件
d:目录文件
b:块目录文件(典型的就是磁盘/dev(设备))
c:字符设备文件(显示器就是典型的字符设备,例如printf接口,在屏幕上打印的就是字符)
而屏幕本质上就是一个字符设备。
例如在/dev/pts/目录下就是一个终端设备
这个终端设备就是用户账号
当我们成功登录了一个设备之后,就会在该目录下显示该终端设备
这是因为终端设备也是一个文件(一切皆文件)
所以,我们就可以通过访问该终端文件对这个用户进行操作

p:管道文件(mkfifi 管道文件)
L:链接文件


在windows系统下,桌面图标仅仅只是一个链接,指向.exe这个可执行程序的链接
例如,我们想要删除QQ
如果你只是把QQ拖动到回收站内
你觉得删除了吗?
没有。
好,你又在回收站内把拖进去的QQ给删除了
那现在总算删除了吧?
不,删了一部分,只删了qq.exe文件,仅此而已。
要把QQ删除,需要把安装路径相关的文件数据全部删除干净
同时,按理来说,在安装的时候,会把qq.exe文件放在对应的路径下
你要打开QQ就需要找到qq.exe文件对应的位置,然后打开
可是,这会极大的增加计算机初学者的学习门槛和负担
所以工程师们为了解决这个问题
所以就设计了链接文件
桌面上的文件就是指向qq.exe文件路径
当你双击桌面的这个图标时,windows系统就会自动链接到对应的路径下的程序,然后执行
其实,桌面上所有的图标都是这个道理


能执行:具有可执行权限 + 文件本身就是一个可执行文件
因此,你有权限执行a文件,但是a文件不是一个可执行文件,所以执行不了。


3、关于目录文件权限,umask掩码


r:所属者角色能否查看目录(-ls)
x:能否进入目录
w:能否增、删、改文件

目录也是一个文件
而文件=内容+属性
那么,文件有对应的属性,很简单
文件的内容是什么?是目录里面的所有的文件信息详情数据
所以,对应的
r就是对目录文件内容的能否读权限
w就是对目录文件内容的能否写权限
x就是对目录文件能否进入的权限

Linxu创建文件/目录的时候为什么会有默认的权限?
普通文件起始创建的权限:0666
目录文件起始创建的权限:0777

创建文件的时候,要从其实权限中,过滤掉(不是简单的减法)在umask中出现的权限(002)
umask权限不同,所以文件/目录初始权限也会不同
002对应的2进制为:000 000 010
666对应的2进制为:110 110 110
对应的按位与umask码之后为:110 110 100 
即权限为664,也就是rw-rw-r--
因此:
最终权限 = 起始权限 & (~umask)(~按位取反)

umask:Linux默认的权限掩码

删除、修改一个文件和目标没有关系,只和文件所在的目录权限有关
目录也是一个文件,这个目录文件也有拥有者、所属者和other
所以,只要是对应的这三个角色有对应的目录权限
那么,自然就可以对相应的目录进行对应的权限操作
例如,我是other
我不是A目录下b文件的拥有者、也不是所属者、自然就是other
但是,b文件对other设置为没有任何权限
但是,我是b所在目录A的other,而且这个other有rwx都有
所以,我可以对目录A下的b文件进行相应的rwx操作
如何理解呢?
可以这么理解:
因为文件=内容+属性
目录也是文件
目录的内容就是详细的文件信息
我对目录文件有rwx
相应的,就可以对目录文件的内容,即目录下的的文件
进行相应的权限操作。
删除一个文件的本质,是改变一个目录的内容

所以,我们如果想要创建一个多用户共同构建的共享文件,就只能在非用户目录下创建


一个文件能不能被删除跟这个文件本身没有关系,是跟这个文件在的地方有关
也就是其所在的目录有关,那么目录对应的角色和对应的权限就可以对文件进行操作

一个用户在创建的时候,默认只会给自己权限打开,所属组和其他权限为0,
所以不用担心其他人修改我们的文件

如果想要创建一个共享文件,可以设置在非用户家目录的地方,任意地方都可以。
但是需要把other的所有权限全部打开

删除文件,是对特定的用户是否对该文件所在的目录是否有写权限
所以我们在建立共相文件的时候
就会出现一个问题:
那就是不相关的用户,也可以对该文件进行干预,乃至于删除
例如,甲乙在共享一个文件A
这个时候丙很不爽,他就把文件A给删除掉了
为什么丙能够删除这个文件A呢?
因为,共享文件A一定是在一个目录下的
而这个目录一定是将other的rwx对应的权限给放开了
所以,甲乙作为other才能一起共建这个文件
我们说,删除/修改/读写一个文件跟目标文件本身无关
而是跟文件所在目录有关
可以这么理解:文件就是目录的内容
一个用户对这个目录有什么权限
就可以对这个目录的内容,即文件执行对饮的权限操作
所以,甲乙丙作为other,都对共享文件有共同的处理的权限
但是这样就很不好
我俩在共享文件好好的,你突然把桌子掀了,把共享文件直接干掉了
那么怎么解决呢?

4、目录添加粘滞位

将目录设置为粘滞位:chmod +t /dir
这样,该目录下的文件就只能:
1、超级管理员删除
2、该目录的所有者删除
3、该文件的所有者删除

也就是说,other和所属组的用户都不能进行删除了,解决了上述的困难
虽然不能删除,但是都可以新建

这篇关于Linux权限(umask掩码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/904228

相关文章

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

在Linux终端中统计非二进制文件行数的实现方法

《在Linux终端中统计非二进制文件行数的实现方法》在Linux系统中,有时需要统计非二进制文件(如CSV、TXT文件)的行数,而不希望手动打开文件进行查看,例如,在处理大型日志文件、数据文件时,了解... 目录在linux终端中统计非二进制文件的行数技术背景实现步骤1. 使用wc命令2. 使用grep命令

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

基于Linux的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断