用按位或、按位与取反实现权限的增减

news2024/9/21 12:48:01

一、介绍:

在Linux操作系统中:

r -4:可读权限

w -2:可写权限

x -1:可执行权限

问题1:三个权限为1,2,4,分别对应:2^0,2^1,2^2,为什么要用8进制表示用户的文件权限?

问题2:如何实现文件权限的增加和减少?

二、解答

问题1:

  1. 简洁明了:使用八进制表示法可以将文件权限表示为一个三位数,每个数字代表一个权限组(所有者、组和其他用户)。这种表示方法相对简洁,不需要额外的符号或文字描述。

  2. 直观易懂:八进制数字与实际权限之间存在直接的对应关系。每个数字代表一个权限组(r、w、x),并且通过将这些权限组的数字组合在一起,可以快速了解文件的权限设置。

  3. 方便修改权限:通过直接修改文件权限的八进制表示,用户可以轻松地更改文件或目录的权限,而不必记住复杂的权限字符表示方法。

  4. 适用于脚本编程:在编写 Shell 脚本或其他编程语言时,八进制表示法更容易用于自动化文件权限设置的脚本中,因为它是一个简单的数字,可以直接在代码中使用。

问题2:

用按位或 | 实现功能的叠加,用按位与取反 &~实现功能的关闭

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int access = 0;
	int r = 4;
	int w = 2;
	int x = 1;
	printf("打开可读权限\n");
	access |= r;
	printf("access = %d\n",access);

	printf("打开可写权限\n");
	access |= w;
	printf("access = %d\n",access);

	printf("打开可执行权限\n");
	access |= x;
	printf("access = %d\n",access);

	printf("再次打开可读权限\n");
	access |= r;
	printf("access = %d\n",access);

	access = access & (~r);
	printf("access = %d\n",access);
	access = access & (~w);
	printf("access = %d\n",access);
	access &= (~x);
	printf("access = %d\n",access);
	access &= (~r);
	printf("access = %d\n",access);
	return 0;
}

三、总结:

使用 8 进制来表示:方便我们能够快速的创建一个能够实现类似功能数字

所有能够参与系统底层代表某些功能开关叠加的数字,必须都是2^n 来进行按位或 | 运算

 所有能够参与系统底层代表某些功能开关关闭的数字,必须都是2^n 来进行按位与取反 &~ 运算

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

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

相关文章

Java毕业设计 基于SpringBoot vue 社区团购系统

Java毕业设计 基于SpringBoot vue 社区团购系统 SpringBoot vue 社区团购系统 功能介绍 前端用户: 首页 图片轮播 商品信息 商品分类展示 搜索 商品详情 点我收藏 添加到购物车 立即购买 我要开团 去参团 评论 公告资讯 资讯详情 登录 注册 个人中心 更新信息 点我充值 我的订…

三、《任务列表案例》前端程序搭建和运行

本章概要 整合案例介绍和接口分析 案例功能预览接口分析 前端工程导入 前端环境搭建导入前端程序 启动测试 3.1 整合案例介绍和接口分析 3.1.1 案例功能预览 3.1.2 接口分析 学习计划分页查询 /* 需求说明查询全部数据页数据 请求urischedule/{pageSize}/{currentPage} 请…

、JMETER与它的组件们

os进程取样器 这个取样器可以让jmeter直接调用python写的测试数据 这样就可以调用python写的测试数据给到jmeter进行调用 注意&#xff1a;1建议python返回转json格式dumps一下&#xff1b;2py文件中需要把结果打印出来&#xff0c;可以不用函数直接编写 传到jmeter之后可以用…

【嵌入式学习】网络编程day0229

一、思维导图 二、练习 TCP通信 服务器 #include <myhead.h> #define SER_IP "192.168.126.42" #define SER_PORT 8888 int main(int argc, const char *argv[]) {int wfd-1;//创建套接字if((wfdsocket(AF_INET,SOCK_STREAM,0))-1){perror("error"…

Nginx多次代理后获取真实的用户IP访问地址

需求&#xff1a;记录用户操作记录&#xff0c;类似如下表格的这样 PS: 注意无论你的服务是Http访问还是Https 访问的都是可以的&#xff0c;我们服务之前是客户只给开放了一个端口&#xff0c;但是既要支持https又要支持http协议&#xff0c;nginx 是可以通过stream 模块配置双…

设计模式-结构模式-装饰模式

装饰模式&#xff08;Decorator Pattern&#xff09;&#xff1a;动态地给一个对象增加一些额外的职责&#xff0c;就增加对象功能来说&#xff0c;装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。 //首先&#xff0c;定义一个组件接口&#xff1a; public in…

【Python笔记-设计模式】策略模式

一、说明 策略模式是一种行为设计模式&#xff0c;它定义了一系列算法&#xff0c;将每个算法封装起来&#xff0c;并使它们可以互相替换。 (一) 解决问题 在需要根据不同情况选择不同算法或策略&#xff0c;规避不断开发新需求后&#xff0c;代码变得非常臃肿难以维护管理。…

python实现常见一元随机变量的概率分布

一. 随机变量 随机变量是一个从样本空间 Ω \Omega Ω到实数空间 R R R的函数&#xff0c;比如随机变量 X X X可以表示投骰子的点数。随机变量一般可以分为两类&#xff1a; 离散型随机变量&#xff1a;随机变量的取值为有限个。连续型随机变量&#xff1a;随机变量的取值是连…

VSCode上搭建C/C++开发环境(vscode配置c/c++环境)Windows系统---保姆级教程

引言劝退 VSCode&#xff0c;全称为Visual Studio Code&#xff0c;是由微软开发的一款轻量级&#xff0c;跨平台的代码编辑器。大家能来搜用VSCode配置c/c&#xff0c;想必也知道VSCode的强大&#xff0c;可以手握一个VSCode同时编写如C&#xff0c;C&#xff0c;C#&#xff…

网神 SecGate 3600 防火墙 sys_export_conf_local_save 文件读取漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

PMP证书的含金量如何?

PMP含金量更多的是“敲门砖”作用&#xff0c;公司招聘的门槛&#xff0c;现在坐项目的大部分都需要PMP/NPDP证书。 当然现在PMP管理模式也很热门&#xff0c;对企业发展很有利&#xff0c;各大企业都有引进改良应用在公司的项目上&#xff0c;之前在校友群里面大家在讨论PMP …

springboot+vue+mysql项目使用的常用注解

实体类常用注解 Data Data 是一个 Lombok 提供的注解&#xff0c;使用 Data 注解可以简化代码&#xff0c;使代码更加简洁易读。 作用&#xff1a;自动为类生成常用的方法&#xff0c;包括 getter、setter、equals、hashCode 和 toString 等需要加Lombok的依赖 <depende…

中小企业“数智未来”行动|ZStack Cloud 荣获“推荐方案”奖

2月29日&#xff0c;以“数智未来 共创数字时代新篇章”为主题的中小企业“数智未来”行动在京成功举办&#xff0c;本次活动由中央广播电视总台央视频和中国中小企业协会作为联合观察单位&#xff0c;带来了一系列帮助中小企业成就业务新价值和数智化升级的优秀产品和方案&…

20240301-2-ZooKeeper面试题(二)

11. Chroot 特性 3.2.0 版本后&#xff0c;添加了 Chroot 特性&#xff0c;该特性允许每个客户端为自己设置一个命名空间。如果一个客户端设置了 Chroot&#xff0c;那么该客户端对服务器的任何操作&#xff0c;都将会被限制在其自己的命名空间下。 通过设置 Chroot&#xff…

Javaweb之SpringBootWeb案例之 Bean管理的Bean作用域详细的解析

2.2 Bean作用域 在前面我们提到的IOC容器当中&#xff0c;默认bean对象是单例模式(只有一个实例对象)。那么如何设置bean对象为非单例呢&#xff1f;需要设置bean的作用域。 在Spring中支持五种作用域&#xff0c;后三种在web环境才生效&#xff1a; 作用域说明singleton容器…

【前端素材】推荐优质后台管理系统网页Hyper平台模板(附源码)

一、需求分析 1、系统定义 后台管理系统是一种用于管理和控制网站、应用程序或系统的管理界面。它通常被设计用来让网站或应用程序的管理员或运营人员管理内容、用户、数据以及其他相关功能。后台管理系统是一种用于管理网站、应用程序或系统的工具&#xff0c;通常由管理员使…

SLAM运动模型

经典的SLAM模型是由一个运动方程和一个观测方程构成的&#xff0c;如下图所示&#xff1a; 其中&#xff1a;x_k为机器人的状态&#xff0c;z为机器人的观测数据&#xff0c;u_k为控制数据&#xff0c;y_j观测点&#xff0c;w和v分别为运动噪声和观测噪声。f为运动方程&#xf…

解决方案:win11自带的截图工具无反应,快捷键(win+shift+S)同样无法使用

问题描述 截图时某次开始突然无法使用 winshiftS 调用win11自带的“截图工具”截图了&#xff0c;我机器的表现是&#xff1a; 使用该快捷键无法调用截图工具&#xff0c;鼠标旁边会有蓝色小圈圈转一下&#xff0c;但也就是转一下&#xff1b;在搜索框手动搜索 “截图工具” …

递归算法题练习(数的计算、带备忘录的递归、计算函数值)

目录 递归的介绍 递归如何实现 递归和循环的比较 例题: &#xff08;一、斐波那契数列&#xff0c;带备忘录的递归&#xff09; 如果直接使用递归&#xff0c;难以算出结果&#xff0c;需要优化 优化方法&#xff1a;带备忘录的递归 &#xff08;二、数的计算&#xff09…

【Linux进程】进程状态(运行阻塞挂起)

目录 前言 1. 进程状态 2. 运行状态 3. 阻塞状态 4. 挂起状态 5. Linux中具体的状态 总结 前言 在Linux操作系统中&#xff0c;进程状态非常重要&#xff0c;它可以帮助我们了解进程在系统中的运行情况&#xff0c;从而更好地管理和优化系统资源&#xff0c;在Linux系统中&am…