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 rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详