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系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决