【CentOS】Linux 文件权限与权限修改

目录

1、Linux 中的文件属性

2、如何修改文件属性与权限

3、目录权限与文件权限的区别

4、Linux 中的文件扩展名


        用户与用户组是Linux文件权限的重要组成部分。

        首先,一定要明确用户与用户组的概念:

        Linux 一般将文件可读写的身份分为三个类别,分别是:拥有者(owner)所属群组(group)其他人(others),且三种身份各有读(read)写(write)执行(execute) 等权限。那么,为什么要这样设置呢?

        这是因为,Linux 是个多人多任务的系统,因此常常会有多人同时使用一台主机的情况,所以需要对用户及其权限进行控制。//你可能注意到,但凡我们对一个东西进行共享,都需要进行角色区分与权限控制,不然就乱套了

        默认的情况下,Linux 用户身份与用户组记录的文件路径:

  • /etc/passwd 用来记录所有的用户信息(用户账号),
  • /etc/shadow 这用来记录用户的密码(经过加密的密码),
  • /etc/group 用来记录所有的分组信息(分组名)。

        这三个文件是 Linux 系统里面账号、密码、用户组信息的集中地,所以,不要随便删除这三个文件。

1、Linux 中的文件属性

        当我们使用 [ ll -a ] 命令后,会看到下边一个列表:// su - 切换用户,exit 退出 su

        选项 -a 表示列出所有的文件详细的权限与属性,包含隐藏文件。文件名第一个字符为 [.] 的文件就是隐藏文件,比如 .cache,.config 文件等。

        下边是文件的属性示意图:

        (1)第一栏代表这个文件的类型与权限(permission),该栏共有十个字符:

        其中,第一个字符用来表示这个文件是目录、文件还是链接文件:

  • [d] 表示目录
  • [-] 表示文件
  • [I] 表示链接文件(link file)
  • [b] 表示设备文件里面的可供存储的周边设备(可按块随机读写的设备 )
  • [c] 表示设备文件里面的串行端口设备,例如键盘、鼠标(一次性读取设备 )

        此外,rwx 所在的位置不会改变,有该权限就会显示字符,没有该权限就变成了减号(-)。

        (2)第二栏表示有多少文件名链接到此节点(inode),该属性记录有多少不同的文件名链接到相同的一个 inode 号码。

        (3)第三栏为文件(或目录)的拥有者账号

        (4)第四栏为文件的所属用户组

        (5)第五栏为文件的容量大小,默认单位为 Bytes

        (6)第六栏为这个文件的创建日期或是最近的修改日期,这一栏的内容分别为日期(月/日)及时间,如果这个文件被修改的时间距离现在太久,那么时间部分会仅显示年份而已,如下所示:

-rw-r--r--.  1 root root  100 Dec 28  2013 .cshrc   #展示年份和日期
-rw-r--r--.  1 root root   21 Jan 22 18:48 demo.txt #展示日期和时间

        (7)第七栏为文件名,如果文件名之前多一个 [.],则代表这个文件为隐藏文件。

2、如何修改文件属性与权限

        在 Linux 中一个文件的属性与权限有很多,对不同属性的权限修改有不同的命令,下边是用于用户组、拥有者、各种身份的权限的修改的命令:

  • chgrp:修改文件所属用户组。
  • chown:修改文件拥有者。
  • chmod:修改文件的权限。

        (1)修改文件所属用户组 chgrp :

        chgrp 命令就是 change group 的缩写,需要注意的是,被修改的组名必须要在 /etc/group 文件中存在才行,否则就会显示错误。

[root@localhost test]# chgrp swadian demo.txt  #修改用户组为swadian
[root@localhost test]# ll
total 4
-rwxr-xr-x. 1 root swadian 21 Jan 22 18:48 demo.txt
[root@localhost test]# chgrp swadian1 demo.txt #组名swadian1不在/etc/group文件中
chgrp: invalid group: ‘swadian1’

        选项与参数:[-R]:进行递归(recursive)修改,常常用在修改某一目录内所有文件的情况,下边所有命令中的 -R 参数也是同样的意思。

        (2)修改文件拥有者 chown:

        chown 命令是 change owner 的缩写,被修改的用户名需要在 /etc/passwd 文件中存在。使用语法如下:

[root@localhost ~]# chown [-R] 账号名称 文件或目录
[root@localhost ~]# chown [-R] 账号名称:用户组名称 文件或目录

        chown 命令不仅能修改文件的拥有者,还能顺便修改文件的用户组:

[root@localhost test]# chown swadian:root demo.txt  #所属用户和用户组修改
[root@localhost test]# ll
total 4
-rwxr-xr-x. 1 swadian root 21 Jan 22 18:48 demo.txt

        (3)修改权限 chmod:

        chmod 是 "change mode" 的缩写。该命令用于更改文件或目录的访问模式,即更改文件或目录的权限。权限的设置方法有两种,分别可以使用数字或是符号来进行权限的修改

        使用数字类型修改文件权限

        Linux 文件的基本权限有 9 个,分别是拥有者(owner)、 所属群组(group)、其他人(others)三种身份和各自的读(read)、写( write)、执行(execute)权限,这九个权限是三个三个一组。其中,我们可以使用数字来代表各个权限,各权限的数字对照表如下://每一个数字或数字和都具有唯一意义

  • r   -> 4
  • w -> 2
  • x  -> 1

        每种身份 (owner、group、others) 各自的三个权限 (r、w、x) 数字是需要累加的,例如当权限为:[-rwxrwx---] 数字则是:

owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0

        所以设置权限时,该文件的权限数字就是 770,修改权限的命令 chmod 的语法是:

[root@localhost ~]# chmod [-R] 权限值 文件或目录  #-R递归修改
[root@localhost test]# chmod 770 demo.txt  #修改权限
[root@localhost test]# ll
total 4
-rwxrwx---. 1 swadian root 21 Jan 22 18:48 demo.txt

        那么,依此类推:

        [-rw-------]:权限数字为 600(6+0+0),表示只有拥有者有读写权限;

        [-rwxr-xr-x]:权限数字为 755(7+5+5),表示拥有者有读、写、执行权限,而用户组和其他用户只有读和执行权限。 

        [-rwxrwxrwx]:权限数字为 777(7+7+7),即所有用户都有读、写、执行权限。 

        使用号类型修改文件权限

        从之前的介绍中可以发现,九个权限分别是 (1) user、(2) group、(3) others 三种身份的读写和执行权限,那么就可以借由 u、g、o 来代表这三种身份。此外,还可以用 a(all) 来代表全部的身份。那么读、写、执行的权限就可以写成 r、w、x,也就是可以使用下面的方式来看:

        假如要设置一个文件的权限为 [-rwxr-xr-x],即:

  • user(u):具有可读、可写、可执行的权限
  • group 与 others (g/o):具有可读与执行的权限

        那么,可使用如下命令进行修改:

[root@localhost test]# chmod u=rwx,go=rx demo.txt  #权限修改
[root@localhost test]# ll
total 4
-rwxr-xr-x. 1 swadian root 21 Jan 22 18:48 demo.txt
[root@localhost test]# 

        但是,如果是要将权限去掉而不修改其他已存在的权限呢?例如要拿掉全部人的可执行权限,那么可使用 - 号来去除对应的权限,修改命令如下所示:

[root@localhost test]# ll
total 4
-rwxr-xr-x. 1 root swadian 21 Jan 22 18:48 demo.txt #原有权限
[root@localhost test]# chmod a-x demo.txt 
[root@localhost test]# ll
total 4
-rw-r--r--. 1 root swadian 21 Jan 22 18:48 demo.txt #修改后的权限

        不知你有没有发现,使用符号类型修改权限时(即在 +- 的状态下),只要是没有指定到的权限,那么该权限就不会被变动,例如上面的例子中,由于仅以 - 拿掉了 x(执行权限),而其他的两个权限的值仍然保持不变。//精确设置

3、目录权限与文件权限的区别

        在Linux中,目录和文件都具有各自的权限,这里需要特别注意的是,文件与目录的权限所具有的意义是不同的。

        (1)限对文件的意义:

        文件是实际含有数据的地方,包括一般文本文件、数据库文件、二进制可执行文件(binary program)等。因此,权限对于文件来说,它的意义是这样的://权限针对文件内容设置

  • r (read):可读取此文件的实际内容,如读取文本文件的文字内容等
  • w (write):可以编辑、新增或是修改该文件的内容(但不含删除该文件)
  • x (execute):该文件具有可以被系统执行的权限

        文件的可读(r)权限这个比较好理解,但是,可执行(x)权限又是什么意思?

        这里就体现出 Linux 和 Windows 在文件方面不一样的地方,Windows 判断一个文件是否具有执行的能力是借由扩展名来判断的,例如:.exe、.bat、.com 等,但是在 Linux 中,文件是否能被执行,则是借由是否具有 [x] 这个权限来决定的,跟文件名没有任何的关系

        至于可写(w)权限,当你对一个文件具有 w 权限时,你可以对文件内容进行写入、编辑、新增和修改,但并不能删除该文件本身。所以,对于文件的 rwx 来说,主要都是针对文件的内容而言,与文件名的存在与否没有关系,因为文件内容指的是文件中的实际数据,而不是文件本身。//文件的写权限并不包含删除该文件

        (2)权限对目录的意义:

        上边说到,文件用来存放实际的数据,那么目录主要用来存储什么?目录主要的内容在于记录文件名列表,所以,文件名与目录有着强烈的关联。那么,目录的权限又具有什么不同的意义呢?//针对的是文件

        读权限(r):表示具有读取目录结构列表的权限。目录可读,就是你可以查询该目录下的文件名数据,所以,你就可以利用 [ll] 这个命令将该目录下的内容列表显示出来。

        注意,如果一个用户无目录的读取权限,那么,使用 [ll] 这个命令就无法例举出目录下的文件名列表://有趣的是,如果你有wx权限,你仍然能修改到你看不到的文件名称(摸黑找物)

[swadian@localhost test]$ ll
total 0
drwx-wx-wx. 2 root swadian 22 Jan 23 01:33 test001   #当前用户无目录的读权限
[swadian@localhost test]$ cd test001
[swadian@localhost test001]$ ll                      #无法列出文件名列表
ls: cannot open directory .: Permission denied

        写权限(w):表示具有修改该目录结构列表的权限,也就是下面这些权限:

  • 新建文件与目录
  • 删除文件与目录,与文件的权限无关(特别注意)
  • 修改文件或目录名称
  • 移动文件或目录

        不过,执行权限(x)是什么意思?目录的执行权限有啥用途?目录只是记录文件名而已,总不能拿来执行吧?

        没错,目录不可以被执行,目录的 x 代表的是用户能否进入该目录,把该目录作为工作目录使用。也就是说,如果你在某目录下不具有 x 的权限,那么你就无法切换到该目录下,也就无法执行该目录下的任何命令,即使你具有该目录的 r 或 w 的权限。//目录的执行权限很重要

        例如,swadian 用户具备 test001 目录的读写权限,但是不具备该目录的执行权限,就无法切换到该目录下:

[swadian@localhost test]$ ll
total 0
drwxrw-rw-. 2 root swadian 22 Jan 23 01:33 test001
[swadian@localhost test]$ cd test001  #拒绝进入
-bash: cd: test001: Permission denied

        所以,如果把目录文件看成是一个抽屉,那么 x 权限就是开启这把抽屉的钥匙。试想一下,如果你连打开抽屉的钥匙都没有,那么就算你被授权可以去读和拿取抽屉中的文件也变得毫无意义。如下所示,对于不具备执行权限的目录,也不允许读和修改:

[swadian@localhost test]$ rm -r test001    #不允许递归删除
rm: cannot remove ‘test001/root.txt’: Permission denied
rm: cannot remove ‘test001’: Permission denied
[swadian@localhost test]$ rm -rf test001   #不允许递归强制删除
rm: cannot remove ‘test001/root.txt’: Permission denied

        因此,当我们开放一个目录数据给别人浏览时,不能只开放 r 的权限,还要给予 x 的权限,如此才能使别的用户正确地查看到文件的内容。//开放一个目录,通常需要具备rx权限

        特意说明的一点是, 目录的 w 不能随便给,当一个用户对一个目录具有 rwx 权限时,他是可以删除这个目录下所有文件的

        至此,你该明白了文件和目录权限的区别了吧,文件的权限针对的是文件的内容,而目录的权限针对的是目录中的文件名列表。

4、Linux 中的文件扩展名

        上边提到过,Linux 的文件其实是没有所谓的扩展名的,一个 Linux 文件能不能被执行,与它的第一栏的十个属性有关,与文件名根本一点关系也没有,这个观念跟 Windows 的情况不相同。在 Windows 中,能被执行的文件扩展名通常是 .com、.exe、.bat 等,而在 Linux 下面,只要你的权限当中具有 x 的话,例如 [ -rwxr-xr-x] 即代表这个文件具有可以被执行的能力。

        不过,可以被执行与可以执行成功是不一样的。也就是说,当一个文件不具备可执行的程序时,就算具有可执行的权限,也无法成功的执行。比如我们把一个记录单词的文本文件 word.txt,把权限修改成为 [-rwxrwxrwx] 后,这个文件能够真得执行成功吗?当然不行,因为它的内容根本就没有可以执行的程序。

        既然如此,为什么我们还经常在Linux中看到带了扩展名的文件呢?

        虽然扩展名在Linux中没有实际的意义,不过我们仍然希望可以借由扩展名来了解该文件是什么东西,所以,通常我们还是会以适当的扩展名来表示该文件是什么种类,下面有数种常用的扩展名:

  • *.sh:脚本或批处理文件(scripts),因为批处理文件使用 shell 写成,所以扩展名就编成 .sh
  • *Z、*.tar、*.tar.gz、*.zip、*.tgz:经过打包的压缩文件,这是因为压缩软件分别为 gunzip、tar 等,由于不同的压缩软件,而取其相关的扩展名
  • *.html、*.php:网页相关文件,分别代表 HTML 语法与 PHP 语法的网页文件。.html 的文件可使用网页浏览器来直接开启,至于.php 的文件,则可以通过客户端的浏览器来服务端浏览,以得到运算后的网页结果。

        基本上,Linux 系统上的文件名只是让你了解该文件可能的用途而已,真正的执行与否仍然需要权限的规范才行。例如虽然有一个文件为可执行文件,如常见的 /bin/ls 这个显示文件属性的命令,不过,如果这个文件的权限被修改成无法执行时,那么 ls 就变成不能执行。

        注:本文档使用 Linux 版本为 CentOS 7.9,不同版本可能会有一定差异。

        至此,全文结束。

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

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

相关文章

亚马逊测评,完善的自养号系统需要具备哪些要求

在亚马逊等跨境电商平台的严格审查下,许多卖家和买家都遭到了封号。这些封号事件对依赖线上销售的小型卖家造成了巨大的冲击。我们发现大部分账号被封的原因在于底层环境搭建不当。 无论是在亚马逊还是其他跨境电商平台,如ebay、速卖通、虾皮、Lazada等…

Docker深入解析:从基础到实践

Docker基础知识 Docker是什么:定义和核心概念解释 Docker是一个开源项目,它诞生于2013年,旨在自动化应用程序的部署过程, 让应用程序能够在轻量级的、可移植的、自给自足的容器中运行。这些容器可以在几乎任何机器上运行&#xf…

顶顶通呼叫中心中间件利用自动外呼进入机器人的压力测试配置流程

文章目录 前言呼入进入机器人配置流程创建线路创建线路组呼入配置 创建自动外呼任务1. 实现“一端放音,另一端进入机器人”操作创建拨号方案—“模拟放音”呼叫路由—“internal”启用拨号方案—“模拟放音”队列外呼配置 2. 实现“两端都进入机器人”操作队列外呼配…

线扫相机使用教程

一.线扫相机的采集原理 在现有的工业 2D 相机中,主要有两种类型的相机,面阵相机和线扫相机。这两种相机有其 各自的特点。 面阵相机:主要用于采集较小尺寸的产品,特别是长度方向较小的产品。其采集原理是通过 单次或多次曝光&…

Docker容器操作 Docker创建并运行Nginx、Redis

容器操作的命令如图: 容器命令 # 创建并运行一个容器,运行成功后会返回容器id docker run# 暂停,将容器挂起,内存暂存,CPU不再执行 docker pause # 恢复运行,内存恢复,CPU恢复 docker unpause#…

【深度学习】sdxl中的 tokenizer tokenizer_2 区别

代码仓库: https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/tree/main 截图: 为什么有两个分词器 tokenizer 和 tokenizer_2? 在仔细阅读这些代码后,我们了解到 tokenizer_2 主要是用于 refiner 模型的。 #…

12000 份发财红包封面免费送

发财红包封面又来啦 寓意新年加薪发财 两个红包封面,各6000份,共12000份 剩余额度全打光,够诚意吧 附送原图(阿里通义万相生成) 祝大家 春节快乐,新年涨薪发财 龙年行大运,万事皆如愿 使用说明 …

微信小程序(十七)自定义组件生命周期(根据状态栏自适配)

注释很详细,直接上代码 上一篇 新增内容: 1.获取手机状态栏的高度 2.验证attached可以修改数据 3.动态绑定样式数值 源码: myNav.js Component({lifetimes:{//相当于vue的created,因为无法更新数据被打入冷宫created(){},//相当于vue的mount…

Redis学习——入门篇④

Redis学习——入门篇④ 6. Redis集群(cluster)6.1 Redis集群是什么,能干什么6.2 Redis集群的槽位-分片6.2.1 槽位6.2.2 分片6.2.3 优点 6.3 slot槽位映射 分区,一般业界有 3 种解决方案6.3.1 哈希取余分区算法6.3.1.1 哈希取余分区…

JVM篇:垃圾回收

如何判断对象可以被回收 Java中对象能否被回收,是根据兑现是否被引用来决定的。如果对象被引用了,说明该对象还在使用,不允许被回收 main栈帧中demo变量存储着Demo实例对象的地址,与Demo实例对象建立了连接关系此时Demo实例对象可…

wsl下安装ros2问题: Unable to locate package ros-humble-desktop 解决方案

❗ 问题 在wsl(Ubuntu 22.04版本)下安装ros的过程中,在执行命令 $ sudo apt install ros-humble-desktop一直弹出报错:Unable to locate package ros-humble-desktop 前面设置编码和添加源的过程中一直没有出现其他问题&#…

游泳耳机入耳式好,还是骨传导好?游泳听音乐最好的耳机推荐

在游泳馆或海边,热爱游泳的人们在水中尽情畅游,享受着清凉的水流和游动的乐趣。为了让游泳体验更上一层楼,戴上专为游泳设计的耳机成为不可或缺的一环。游泳耳机不仅防水,还能让你在畅游的同时,尽情享受高质量的音乐&a…

Android Studio离线开发环境搭建

Android Studio离线开发环境搭建 1.下载离线和解压包2.创建工程3.创建虚拟机tips 1.下载离线和解压包 下载地址 百度网盘:https://pan.baidu.com/s/1XBPESFOB79EMBqOhFTX7eQ?pwdx2ek 天翼网盘:https://cloud.189.cn/web/share?code6BJZf2uUFJ3a&#…

VMware虚拟机部署Linux Ubuntu系统

本文介绍基于VMware Workstation Pro虚拟机软件,配置Linux Ubuntu操作系统环境的方法。 首先,我们需要进行VMware Workstation Pro虚拟机软件的下载与安装。需要注意的是,VMware Workstation Pro软件是一个收费软件,而互联网中有很…

[GYCTF2020]Ezsqli1

打开环境,下面有个提交表单 提交1,2有正确的查询结果,3以后都显示Error Occured When Fetch Result. 题目是sql,应该考察的是sql注入 简单fuzz一下 发现information_schema被过滤了,猜测是盲注了。 测试发现只要有东…

OSI七层模型 | TCP/IP模型 | 网络和操作系统的联系 | 网络通信的宏观流程

文章目录 1.OSI七层模型2.TCP/IP五层(或四层)模型3.网络通信的宏观流程3.1.同网段通信3.2.跨网段通信 1.OSI七层模型 在计算机通信诞生之初,不同的厂商都生产自己的设备,都有自己的网络通讯标准,导致了不同厂家之间各种协议不兼容&#xff0…

(大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量

今天,面试了一家公司,什么也不说先来三道面试题做做,第一题。 那么,我们就开始做题吧,谁叫我们是打工人呢。 题目是这样的: 统计除豪车外,销售最差的车 车辆按批销售,每次销售若干…

通俗易懂理解MobileNet网络模型

温故而知新,可以为师矣! 一、参考资料 详细且通俗讲解轻量级神经网络——MobileNets【V1、V2、V3】 MobileNet v1 和 MobileNet v2 二、MobileNet v1 原始论文:[1] MobileNet网络详解 【深度学习】轻量化CNN网络MobileNet系列详解 Mo…

RLHF学习

整体流程 三个步骤分解: 预训练一个语言模型 (LM) ;聚合问答数据并训练一个奖励模型 (Reward Model,RM) ;用强化学习 (RL) 方式微调 LM。 RW RM 的训练是 RLHF 区别于旧范式的开端。这一模型接收一系列文本并返回一个标量奖励&…

力扣hot100 最小栈 变种栈

Problem: 155. 最小栈 文章目录 思路💖 Stack 自定义 Node🍻 Code 思路 👩‍🏫 甜姨 💖 Stack 自定义 Node 时间复杂度: O ( 1 ) O(1) O(1) 空间复杂度: O ( n ) O(n) O(n) 🍻 Code class MinS…