Linux用户与文件的关系和文件掩码(umask)的作用

2024-01-20 19:36

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


文章目录

  • 1 前言
  • 2 Linux用户与文件的关系
  • 3 文件掩码(umask)
  • 4 总结


1 前言

  阅读本篇文章,你将了解Linux的目录结构,用户与文件的关系,以及文件掩码的作用。为了方便大家理解,本文将通过实例进行演示,建议有条件的跟着操作一下,以便加深理解。


2 Linux用户与文件的关系

  用户账号分为两类:超级用户(root)和普通用户,超级用户又称为管理员用户。超级用户可以使用命令useradd创建普通用户账号。假设我们现在利用超级用户创建两个用户组A和B,然后创建4个普通用户:User1、User2、User3、User4,让User1和User2属于用户组A,User3和User4属于用户组B。创建的目录结构如图1所示。

在这里插入图片描述

图1 目录结构示例

  如图2所示,对于一个文件来说,操作它的用户分为三种:文件拥有者用户(u),文件所属用户组用户(g),其它用户(o)。

在这里插入图片描述

图2 访问文件的用户的三种身份

  不同身份的用户,对文件的操作权限不同,一般文件拥有者用户的权限最大,文件所属用户组用户次之,其它用户权限最小。图3展示的权限分为三种:读权限、写权限、执行权限。

在这里插入图片描述

图3 用户访问文件的三个权限

  假如User1创建一个文件test.c,那么对于test.c文件来说,User1就属于拥有者用户,User2属于用户组用户,User3和User4属于其他用户。那么不同身份的用户对文件的操作权限是怎样的呢?我们可以来实操一下,首先创建四个用户:User1、User2、User3、User4。

  创建两个用户组A和B:

groupadd A
groupadd B

在这里插入图片描述

  创建4个普通用户:User1、User2、User3、User4

useradd -g A User1
passwd User1

在这里插入图片描述

  然后用同样的命令创建剩下的三个用户:

useradd -g A User2
passwd User2useradd -g B User3
passwd User3useradd -g B User4
passwd User4

  我们来到home文件夹下,可以看到新创建的四个普通用户家目录。

在这里插入图片描述

  接着登录User1用户,并在其家目录下创建一个文件test.c,此时对于test.c文件来说,User1就属于拥有者用户,User2属于用户组用户,User3和User4属于其他用户。

touch test.c

在这里插入图片描述

  查看test.c的文件权限可以看到为-rw-r–r–,其中rw-是文件拥有者用户的权限,代表具有读写权限;r–是用户组用户的权限,只具备读权限;r–是其他用户的权限,也只有读权限。可以用二进制表示文件的权限为0110100100,转换为8进制表示为0644
  读者可以自行尝试登录User2或User3,观察是否可以往test.c中写入内容。新创建的文件的权限为什么是0644呢?如何控制新创建的文件权限呢?


3 文件掩码(umask)

  其实我们新创建出来的普通类型文件预设权限(又称默认权限)是0666,但最后文件的权限会变为0644,这是因为创建文件的时候还要受到文件掩码的影响。其实,实际创建的出来的文件权限是: 0666 & (~umask)。首先来查看一下文件掩码:umask

在这里插入图片描述

  可以看到User1用户的默认文件掩码为0022,注意文件掩码是由四位8进制数字组成,第一位是预置位,一般设置为0;后3位是文件的权限。故文件最终的权限为:0666 & (~0022) = 0666 & 7755 = 0644。
不难想象,如果文件掩码为0000,那么我们创建出来的文件的权限就等于预设权限,下面对这一点进行验证:
  首先修改文件掩码,命令:umask 0 //将文件掩码修改为0

在这里插入图片描述

  创建文件main.cpp,并查看该文件的信息:

在这里插入图片描述

  可以看到当文件掩码改为0时,我们创建出的文件权限为0666,这样对于拥有者用户、组用户、其它用户都对文件具有读写的权限,实际上这样是不合理的,一般我们不希望其他用户能够修改文件,即让其他用户不具备写的权限,文件掩码就可以实现这个功能,有了文件掩码,我们就能默认将其他用户的写的权限给限制住。换句话说,文件掩码可以让系统更安全。


4 总结

  本次通过实操讲解了用户对文件的操作权限,要想理解权限,需要站在文件的角度,观察用户对文件是什么身份,不同的身份具有不同的权限,默认情况下文件拥有者用户的权限最大,文件所属用户组用户次之,其它用户权限最小,而root用户具备对文件的所有操作权限。接着讲解了文件掩码,利用文件掩码可以控制用户创建文件的默认权限。文件掩码的作用是限制不同身份用户的权限,使得系统更加安全。

这篇关于Linux用户与文件的关系和文件掩码(umask)的作用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Linux下修改hostname的三种实现方式

《Linux下修改hostname的三种实现方式》:本文主要介绍Linux下修改hostname的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下修改ho编程stname三种方式方法1:修改配置文件方法2:hFvEWEostnamectl命

Linux虚拟机不显示IP地址的解决方法(亲测有效)

《Linux虚拟机不显示IP地址的解决方法(亲测有效)》本文主要介绍了通过VMware新装的Linux系统没有IP地址的解决方法,主要步骤包括:关闭虚拟机、打开VM虚拟网络编辑器、还原VMnet8或修... 目录前言步骤0.问题情况1.关闭虚拟机2.China编程打开VM虚拟网络编辑器3.1 方法一:点击还原VM

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my

MyBatis的配置对象Configuration作用及说明

《MyBatis的配置对象Configuration作用及说明》MyBatis的Configuration对象是MyBatis的核心配置对象,它包含了MyBatis运行时所需的几乎所有配置信息,这个对... 目录MyBATis配置对象Configuration作用Configuration 对象的主要作用C

Linux系统之authconfig命令的使用解读

《Linux系统之authconfig命令的使用解读》authconfig是一个用于配置Linux系统身份验证和账户管理设置的命令行工具,主要用于RedHat系列的Linux发行版,它提供了一系列选项... 目录linux authconfig命令的使用基本语法常用选项示例总结Linux authconfi

jdk21下载、安装详细教程(Windows、Linux、macOS)

《jdk21下载、安装详细教程(Windows、Linux、macOS)》本文介绍了OpenJDK21的下载地址和安装步骤,包括Windows、Linux和macOS平台,下载后解压并设置环境变量,最... 目录1、官网2、下载openjdk3、安装4、验证1、官网官网地址:OpenJDK下载地址:Ar

linux本机进程间通信之UDS详解

《linux本机进程间通信之UDS详解》文章介绍了Unix域套接字(UDS)的使用方法,这是一种在同一台主机上不同进程间通信的方式,UDS支持三种套接字类型:SOCK_STREAM、SOCK_DGRA... 目录基础概念本机进程间通信socket实现AF_INET数据收发示意图AF_Unix数据收发流程图A

linux环境openssl、openssh升级流程

《linux环境openssl、openssh升级流程》该文章详细介绍了在Ubuntu22.04系统上升级OpenSSL和OpenSSH的方法,首先,升级OpenSSL的步骤包括下载最新版本、安装编译... 目录一.升级openssl1.官网下载最新版openssl2.安装编译环境3.下载后解压安装4.备份

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock

linux打包解压命令方式

《linux打包解压命令方式》文章介绍了Linux系统中常用的打包和解压命令,包括tar和zip,使用tar命令可以创建和解压tar格式的归档文件,使用zip命令可以创建和解压zip格式的压缩文件,每... 目录Lijavascriptnux 打包和解压命令打包命令解压命令总结linux 打包和解压命令打