CentOS8基础篇6:文件属性的读取和修改

news2024/9/22 19:22:08

一、文件属性

每一行代表对应文件或目录的详细信息。从左到右具体的含义是文件属性、文件数、拥有者、所属的组、文件大小、建立月份、建立日期、建立年份或时间、以及文件名。其中“建立年份或时间”字段,如果文件是今年建立的,则显示具体时间,如果是往年建立的,则显示年份。

文件属性由10个字母组成,其中第一个字母表示文件类型,后九个字母分为三组,表示文件的访问权限。

文件属性的第一个字母是类型标识,用来说明文件的类型。在Linux操作系统中,共有七种文件类型,分别是:

d (directory) 目录文件。

l (link) 符号链接。

s (socket) 套接字文件。

b  (block)块设备文件,二进制文件。

c  (character)字符设备文件。

p (pipe) 命名管道文件。

-  普通文件,或者更准确地说,不属于以上几种类型的文件。

用户对文件的操作权限分为读、写和执行三种,分别用r、w、x表示。若用户没有某个权限,则在相应权限位用“-”占位,代表无此权限。

若文件具有x属性,是可执行的文件。具有x属性的文件一般是二进制程序文件或可执行的脚本文件。若目录具有x属性,则表示允许打开该目录中的文件,并且可用cd命令进入该目录。

只有root用户和文件拥有者才可以修改文件访问权限。

二、修改文件属性

1.修改文件访问权限的chmod命令

(1)绝对权限方法

文件的九位权限除了可用r、w、x来表示外,还可用一个3位的十进制数字来表示。

比如644,其百位上的数字代表文件拥有者的权限,十位上的数字代表所属用户组的权限,个位上的数字代表其他用户对该文件的权限。这种采用数字来表示权限的方法,称为绝对权限表示法也称为数字权限表示法。

由于用户的权限是用rwx来表示的,没有的权限对应位置上用“-”表示,有权限的位置可用1表示,没有权限的位置用0来表示,这样就会形成一个3位的二进制编码,然后将该二进制数转换成对应的十进制数,这样就得到一个0~7的数,从而就可以实现十进制数来表示用户对文件的权限。

具体做法是将r的对应值设为4,w的对应值设为2,x的对应值设为1。

命令格式:chmod   [选项]   绝对权限值   要修改的文件或目录名称

chmod命令常用的选项是-R,其功能是可以递归设置指定目录下的全部文件(包括子目录和子目录中的文件)的权限。

〖例3.18〗修改当前目录下test文件的访问权限使所有用户对该文件均有读写权限。

#chmod  666  test

(2)相对权限方法

使用相对权限方法修改文件权限,命令格式:

chmod   修改对象 运算符 用户权限   要修改的文件或目录名称

其中修改对象位置上可以是u(文件拥有者)、g(同组用户)、o(其他用户)、a(全体用户)的任意组合。运算符位置上可以是+(添加)、-(删除)、=(只赋值)中的任意一个。

用户权限上写的是r、w、x的任意组合。

例如,对文件test的组用户添加写权限,则执行命令:chmod  g + w  aaa。

〖例3.19〗修改当前目录下test文件的访问权限使所有用户对该文件均有读写权限。

#chmod  a+rw  test

或者

#chmod  ugo+rw  test

〖例3.20〗增加组用户对当前目录下file文件的写权限,取消其他用户对file文件的读权限。

#chmod  g+w  file

#chmod  o-r  file

如果修改前file文件的权限是644,那么修改后file文件权限是660。

2.修改文件所有者的chown命令

文件或目录的创建者,一般是该文件或目录的拥有者,对文件具有最高的使用权。

root用户可以将一个文件或目录的拥有权转让给其他用户,使其他用户成为该文件或目录的拥有者。

通过chown命令还可以修改文件所属的组。

命令格式:chown   [选项]   新所有者.新用户组   要修改的文件或目录名称

chown命令常用的选项是-R,其功能是可以递归设置指定目录下的全部文件(包括子目录和子目录中的文件)的所属关系。

〖例3.21〗将当前目录下的file文件的拥有者修改为tom,所属组改为tom组。

#chown  tom.tom  file  或者

#chown  tom:tom  file

〖例3.22〗将当前目录下的file文件的所属组改为tom组。

#chown  .tom  file 或者

#chown  :tom  file

注意“.”或“:”的作用。

3.提升用户权限

1)使用su命令切换用户

在su命令后加用户名称,可以切换系统当前用户身份。在用户切换的时候,从root用户向普通用户可以直接进行切换,反之则需要root账号密码。这是因为root用户是系统中权限最高的用户,可以切换到任意身份不需要密码。普通用户之间切换需要密码验证。

在切换用户身份时,通常需要增加“-”选项,例如#su - tom命令表示切换到tom用户。“-”选项表示:切换用户时,使环境变量(home,Shell,user,logname,path等)和欲切换的用户相同,不使用该选项则取得的只是用户的临时权限。

2)使用sudo命令提升权限

root用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在/etc/sudoers文件中,即完成对该用户的授权(此时该用户称为“sudoer”)。

sudoer用户需要取得特殊权限时,可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行,对于普通用户来讲不需要知道root用户的密码,这样可以提高系统的安全性。

〖例3.23〗root用户需要创建一个普通用户teacherli具有管理员权限,并执行系统的日常维护工作,则可以把teacherli用户设为sudoer。具体方法如下:

第1步:查看是否已经安装了sudo

#rpm  –qa | grep  sudo

sudo-1.8.6p7-16.el7.x86_64

如果没有安装sudo,可以在系统光盘中找到sudo的rpm包进行安装:

#rpm  –ivh  /media/Packages/sudo-1.8.6p7-16.el7.x86_64

第2步:编辑/etc/sudoers文件

在文件的最后插入:

teacherli  ALL=(ALL)  ALL

保存退出。此后,以teacherli登录系统,就可以以sudo 命令的方式进行系统的管理了。

例:teacherli向系统添加用户lihua

用户teacherli做为一个普通用户账号,是没有权限执行useradd命令向系统添加用户的,但是做为一个sudoer则可以通过使用$sudo  useradd  lihua然后在系统提示“[sudo] password for teacherli:”时输入teacherli的口令确认后即可。

如果需要指定某个用户只能执行指定的命令,则可以在/etc/sudoers文件中按照如下格式插入一行:

用户账户名  可执行的命令列表

例如,让john用户只具有执行添加用户组的命令权限。

john  localhost=/usr/sbin/goupadd

项目二:文件属性的读取和修改

操作过程:

以dguser0102账号登录系统

$touch  /tmp/ourfile  //此时若其他用户修改文件ourfile,则系统会报“文件只读”,而不能完成修改功能。

$chmod  666  /tmp/ourfile   //修改ourfile文件的访问权限。

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

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

相关文章

文献阅读笔记 # GraphCodeBERT: Pre-training Code Representations with Data Flow

《GraphCodeBERT: Pre-training Code Representations with Data Flow》ICLR 2021 (TH-CPL A会,公认顶会,但未上 CCF 榜)作者部分与 CodeBERT 重叠,主要来自 MSRA Intern 和 MSRA 研究员,学生来自国内多个顶尖高校。资源&#xff…

java 黑马头条 day3 实名认证分布式事务问题 seata

1 完善实名认证功能 1.1 实名认证分布式事务问题 1.1.1 问题分析 在昨天的实名认证代码中,审核完毕后添加 id5的演示异常,重新使用postman进行测试, 会发现 出现异常后 本地方法因为有 Transactional注解 对ap_user ap_user_realname的操作会回滚 而…

【Docker】配置lsky pro兰空图床

Docker 部署 lsky pro 兰空图床的教程 本文首发于 慕雪的寒舍 1.使用Docker部署 命令比较简单,用下面的即可 docker run -d \ --name lsky \ -p 14728:80 \ -v /root/docker/lsky:/var/www/html \ halcyonazure/lsky-pro-docker:latest--name 设置容器名字为 lsky…

基于VS调试分析 + 堆栈观察问题代码段

文章目录问题代码段1 —— 阶乘之和问题代码段2 —— 越界的危害① 发现问题② 分析问题③ 思考问题【⭐堆栈原理⭐】④ 解决问题【DeBug与Release】👨程序员与测试人员👩✒总结与提炼问题代码段1 —— 阶乘之和 先来看一道C语言中比较基础的题目&#x…

新能源汽车PK燃油汽车,首次胜出,输赢真的那么重要?

新能源汽车PK燃油汽车,输赢真的那么重要?是的。【科技明说 | 每日看点】今天看到一个新能源汽车领域的消息,我觉得很有意思,是说中国新能源汽车满意度水平首次超过了燃油汽车,你们觉得是这样么?…

语义通信:DeepSC用于文本传输也太香了吧

论文标题:Deep Learning Enabled Semantic Communication Systems 论文链接:https://arxiv.org/abs/2006.10685v1 摘要 最近,人们开发了支持深度学习的端到端(E2E)通信系统,以合并传统通信系统中的所有物…

React中JSX的用法和理解

React的特点 React是用于构建用户界面的高效且灵活的 JavaScript 库,采用组件化模式和声明式编码;使用DOMdiff算法,最大限度地减少与DOM的交互。 相关js库 react.js:React核心库。react-dom.js:提供操作DOM的react扩…

Eclipse导出jar时的错误

文章目录一、发现问题二、解决问题三、新的问题今天,本来是风和日丽,轻风和畅的,复习的一天,直到我开始尝试导出 jar 可执行文件,兄弟们请记住这个词,我将被他折磨很久。一、发现问题 首先,我美…

RT-Thread MSH_CMD_EXPORT分析

RT-Thread MSH_CMD_EXPORT分析 1. 源码分析 在rt-thread中,使用FinSH,可以支持命令行。在源码中,使用MSH_CMD_EXPORT导出函数到对应命令。 extern void rt_show_version(void); long version(void) {rt_show_version();return 0; } MSH_CM…

实战超详细MySQL8离线安装

在RedHat中,RPM Bundle 方式安装MySQL8。建议一定要用 RPM Bndle 版本安装,包全。官网下载:https://dev.mysql.com/downloads/mysql/1.卸载mariadb,会与MySQL安装冲突。rpm -qa | grep mariadb 查看有无mariadb如果有&#xff0…

数据机构笔记哈夫曼编码

1.什么是哈夫曼树?哈夫曼树经典问题:合并果堆问题:如果有三个果堆,其质量分别是1,2,3,我们现在需要将这三堆合并成一堆果堆,合并过程消耗体力等于两堆果堆的质量之和,求最小体力消耗值&#xff…

java贪心算法

1 应用场景-集合覆盖问题 假设存在下面需要付费的广播台,以及广播台信号可以覆盖的地区。 如何选择最少的广播台,让所有的地区 都可以接收到信号 2 贪心算法介绍 贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优…

Threadlocal为何引发内存泄漏问题

首先我们要先了解什么是泄漏问题和什么是内存溢出 内存泄漏表示程序员申请了内存,但是该内存一直无法被释放 内存溢出表示申请内存不足,就会报错 为何引发内存泄漏问题 因为每个线程都有自己独立的ThreadLocalMap对象,key为ThreadLocal&…

【C++1】函数重载,类和对象,引用,string类,vector容器,类继承和多态,/socket,进程信号

文章目录1.函数重载:writetofile(),Ctrue和false,C0和非02.类和对象:vprintf2.1 构造函数:对成员变量初始化2.2 析构函数:一个类只有一个,不允许被重载3.引用:C中&取地址&#x…

【shell 编程大全】内容格式化以及多样化输出

内容格式化以及多样化输出 1. 前倾回顾 本章节我们一起来学习下,shell中内容格式化,以及多样输出。但是在学习之前,我们先来看看上个章节【shell 变量的定义以及使用】 我们都学习到了什么知识 shell 变量的定义以及使用 变量分类变量定义类…

SpringBoot设置和读取配置文件(1)

SpringBoot配置文件是用来保存SpringBoot项目当中所有重要的数据的,比如说数据库连接信息,数据库的启动端口,如果端口被占用了,那么就可以随时修改; 1)比如说我们之前再写JDBC的代码的时候,要去写链接字符串…

C 字符串

在 C 语言中,字符串实际上是使用空字符 \0 结尾的一维字符数组。因此,\0 是用于标记字符串的结束。空字符(Null character)又称结束符,缩写 NUL,是一个数值为 0 的控制字符,\0 是转义字符&#…

SNI生效条件 - 补充nginx-host绕过实例复现中SNI绕过的先决条件

文章目录1.前置环境搭建2.测试SNI生效条件(时间)3. 证书对SNI的影响3.1 双方使用同一个证书:3.2 双方使用不同的证书与私钥4. 端口号区分测试4.1 端口号区分,证书区分:4.2 端口号区分,证书不区分:5.总结SNI运行机制6. SNI机制绕过…

Docker-安装Jenkins-使用jenkins发版Java项目

文章目录0.前言环境背景1.操作流程1.1前期准备工作1.1.1环境变量的配置1.2使用流水线的方式进行发版1.2.1新建流水线任务1.2.2流水线操作工具tools步骤stages步骤1:拉取代码编译步骤2:发送文件并启动0.前言 学海无涯,旅“途”漫漫,“途”中小记&#xff…

从0到1一步一步玩转openEuler--12 openEuler用户管理

文章目录12.1 创建用户12.1.1 useradd命令12.1.2 用户信息文件12.1.3 创建用户实例12.2 修改用户账号12.2.1 修改密码12.2.2 修改用户shell设置12.2.3 修改主目录12.2.4 修改UID12.2.5 修改账号的有效期12.3 删除用户12.4 管理员账户授权在Linux中,每个普通用户都有…