文章目录

  • 一、ll命令
  • 二、linux权限概述
    • 2.1 权限 详解
    • 2.2 权限对于目录的意义
    • 2.3 权限对于文件的意义
    • 2.4 验证下文件的删除权限
    • 2.5 SGID
  • 3 默认权限和umask
    • 3.1 umask默认权限的修改方法
  • 参考

一、ll命令

“ls -l” “ls -al” ll 用来查询当前目录下文件及目录的详情

1. 第一位文件类型

- 普通文件 , d 目录文件,I 链接文件,p 管理文件, b 块设备文件, c 字符设备文件, s 套接字文件

2.文件属性

接着的九位分为三个一组共三组,分别为拥有者权限,所属组权限,其他用户权限

第一部分表示文件创建者/所有者权限,第二部分表示同组其他用户的权限,第三部分表示其他组用户的权限,权限也可以用数字代替

444 r--r--r--
600 rw-------
644 rw-r--r--
666 rw-rw-rw-
700 rwx------
744 rwxr--r--
755 rwxr-xr-x
777 rwxrwxrwx

chomd 777 就是赋予三类用户读,写,执行权限

3.目录、链接数量

第三列的数字,代表该文件所具有的一级子目录的个数,实际子目录数值是该数字-2,因为 . 和 … 分别代表 本级目录 和 上级目录

4. 创建者与所在组

第4 5列是创建者和所在组的名称

5.文件大小

文件大小,单位为字节

6.创建的时间和日期

二、linux权限概述

Linux 系统中 文件权限对应的数字: r = 4; w = 2; x = 1;

权限可以使用 chmod 命令改变。

文件或者文件夹有三部分权限:所有者权限,同组用户权限,其他组用户权限

  • 所有者权限(文件或者文件夹的所有者):

    r表示具备读权限,w表示写权限,x表示具备执行的权限

    rwx:表示可读可写可执行

    r-x:表示可读不可写可执行

  • .同组用户权限:也是r表示具备读权限,w表示写权限,x表示具备执行的权限

  • 其他组用户权限:也是r表示具备读权限,w表示写权限,x表示具备执行的权限

所以:
rw- r-x r-x 可以用6 5 5 来表示

rwx rwx rwx用 7 7 7 来表示

2.1 权限 详解

在linux系统中我们有很多权限,我们可以简单查看一下任意一个文件夹下的文件的权限:

我们可以看见,上图中第一列中我们的文件和文件夹都有相应的权限,那我们来看看文件和文件夹的权限:

首先我们要说一下,无论是文件还是文件夹第一列中都有十列权限,这十列中的含义如下:

  • 第一列表示文件类型,我们可以看到,上图中第一列有d,有-,如果是d,则代表这个文件是个文件夹,如果是-,则代表这是个文件|(包括硬链接也被视为文件),如果是l,则代表它是软链接文件。还有一些不常用的比如b是块文件,c为字符文件,s为socket文件,p为管道文件等。

  • 接着的九位分为三个一组共三组,分别为拥有者权限,所属组权限,其他用户权限。

    在linux中我们有用户和用户组的概念,比如我们上图中第三列的root或者zephyr代表的就是用户名,即这个文件属于哪个用户,后面第四列的是所属组名,表示这个用户的所属组。

    那么九位中的前三位,也就是第2-4位,它表示的是文件所有者的权限,如果是-,则代表这一位没有值。其中r代表读权限,w代表写权限,x代表执行权限。
    九位中的中间三位,也就是5-7位,表示的是文件所属组的权限。
    九位中的后三位,也就是8-10位,表示的是其他人的权限。

rwx就对应着二进制的111,r--就对应着二进制的100,然后我们把它换算成十进制,rwx即111就是7,r--即100就是4。我们可以通过chmod命令来改变文件的权限。格式如下:

chmod 777(想要什么权限就设置成什么) 文件名

但是要注意,这些权限对root用户都无效,root用户对任何文件都可以操作

2.2 权限对于目录的意义

对于文件来说,很好理解rwx的意义,均指对文件内容的权限,和名称无关,但是对于文件夹来说,有些不同,目录注意的内容在于记录文件名列表,文件名与目录有强烈的关联。

  • r读权限:拥有此权限表示可以读取目录结构列表,也就是说可以查看目录下的文件名和子目录名,注意:仅仅指的是名字。

    例如ls查看文件夹内的子目录名

  • w写权限:拥有此权限表示具有更改该目录结构列表的权限,总之,目录的w权限与该目录下的文件名或子目录名的变动有关,注意:指的是名字。具体如下:

    • 在该目录下新建新的文件或子目录。

    • 删除该目录下已经存在的文件或子目录(不论该文件或子目录的权限如何),注意:这点很重要,用户能否删除一个文件或目录,看的是该用户是否具有该文件或目录所在的父目录的w权限

    • 将该目录下已经存在的文件或子目录进行重命名。

    • 转移该目录内的文件或子目录的位置。

  • x权限:拥有目录的x权限表示用户可以进入该目录成为工作目录,能不能进入一个目录,只与该目录的x权限有关,如果用户对于某个目录不具有x权限,则无法切换到该目录下,也就无法执行该目录下的任何命令,即使具有该目录的r权限

    > 例如cd操作,如果没有x权限提示失败。即使不用cd,比如你执行`cp a.txt b` 把a.txt复制到b目录下,如果没有对b目录的x权限,也是会失败的。
    

    且如果用户对于某目录不具有x权限,则该用户不能查询该目录下的文件的内容,注意:指的是内容,如果有r 权限是可以查看该目录下的文件名列表或子目录列表的。所以要开放目录给任何人浏览时,应该至少要给与r及x权限。

2.3 权限对于文件的意义

  • r权限:用于此权限表示可以读取此文件的实际内容。

  • w权限:拥有此权限表示可以编辑、添加或者是修改该文件的内容。但是不包含删除该文件

    删除一个文件并不需要此文件的读写权限。而是它所属的父目录的写权限

  • x权限:表示该文件具有可以被系统执行的权限。文件是否能被执行就是由该权限来决定的,跟文件名没有绝对的关系。

2.4 验证下文件的删除权限

如果这个目录属于用户1,那么对于用户2在里面创建的文件,无论用户1是否对这个文件有权限,有什么权限,用户1都可以删除这个文件。即若用户1有一个目录,那么对于其中所有的文件,用户1都可以删除它。借用《鸟哥的linux私房菜》的一句话:假如你有一个抽屉(目录),那么别人在你的抽屉里放了一本加锁的日记(文件),你没有钥匙,所以你不能查看日记(文件)的内容,但是抽屉(目录)是你的,你可以把日记(文件)扔到垃圾箱中。我们试一下:

有2个用户,zephyr用户和root用户,在zephyr用户所属的文件夹中,用root用户创建一个文件 a :

此时,a归属root用户,但是默认的权限,让zephyr用户也是可以查看其文件内容的,我们重新修改下权限:

通过chmod 400 命令,让zephyr用户没有阅读内容的权限,验下,此时报无权限:

但是它在zephyr用户的文件夹里,我们就可以删除它:

2.5 SGID

参见下面原文中内容

3 默认权限和umask

Linux 是注重安全性的操作系统,而安全的基础在于对权限的设定,不仅所有已存在的文件和目录要设定必要的访问权限,创建新的文件和目录时,也要设定必要的初始权限

Windows 系统中,新建的文件和目录时通过继承上级目录的权限获得的初始权限,而 Linux 不同,它是通过使用 umask 默认权限来给所有新建的文件和目录赋予初始权限的。

那么,我们如何得知 umask 默认权限的值呢?直接通过 umask 命令即可:

[root@localhost ~]# umask
0022
#root用户默认是0022,普通用户默认是 0002

读者可能会问,不应该只有 3 个数字(分别对应 3 种用户身份)吗,为什么有 4 个? umask 默认权限确实由 4 个八进制数组成,但第 1 个数代表的是文件所具有的特殊权限(SetUID、SetGID、Sticky BIT),此部分内容放到后续章节中讲解,现在先不讨论。也就是说,后 3 位数字 “022” 才是本节真正要用到的 umask 权限值,将其转变为字母形式为 ----w–w-。

注意,虽然 umask 默认权限是用来设定文件或目录的初始权限,但并不是直接将 umask 默认权限作为文件或目录的初始权限,还要对其进行 "再加工"

文件和目录的真正初始权限,可通过以下的计算得到:

文件(或目录)的初始权限 = 文件(或目录)的最大默认权限 - umask权限

如果按照官方的标准算法,需要将 umask 默认权限使用二进制并经过逻辑与和逻辑非运算后,才能得到最终文件或目录的初始权限,计算过程比较复杂,且容易出错,因此本节给大家介绍了更简单的计算方式。

显然,如果想最终得到文件或目录的初始权限值,我们还需要了解文件和目录的最大默认权限值。在 Linux 系统中,文件和目录的最大默认权限是不一样的:

  • 文件来讲,其可拥有的最大默认权限是 666,即 rw-rw-rw-。也就是说,使用文件的任何用户都没有执行(x)权限。原因很简单,执行权限是文件的最高权限,赋予时绝对要慎重,因此绝不能在新建文件的时候就默认赋予,只能通过用户手工赋予。
  • 目录来讲,其可拥有的最大默认权限是 777,即 rwxrwxrwx。

接下来,我们利用字母权限的方式计算文件或目录的初始权限。以 umask 值为 022 为例,分别计算新建文件和目录的初始权限:

  • 文件的最大默认权限是 666,换算成字母就是 “-rw-rw-rw-”,umask 的值是 022,换算成字母为 “-----w--w-”。把两个字母权限相减,得到 (-rw-rw-rw-) - (-----w--w-) = (-rw-r--r--),这就是新建文件的初始权限。我们测试一下:

    [root@localhost ~]# umask
    0022
    #默认umask的值是0022
    [root@localhost ~]# touch file  <--新建file空文件
    [root@localhost ~]# ll -d file
    -rw-r--r--. 1 root root 0 Apr 18 02:36 file
    
  • 目录的默认权限最大可以是 777,换算成字母就是 “drwxrwxrwx”,umask 的值是 022,也就是 “-----w–w-”。把两个字母权限相减,得到的就是新建目录的默认权限,即 (drwxrwxrwx) - (-----w--w-) = (drwxr-xr-x)。我们再来测试一下:

    [root@localhost ~]# umask0022
    [root@localhost ~]# mkdir catalog  <--新建catalog目录
    [root@localhost ~]# ll -d catalog
    drwxr-xr-x. 2 root root 4096 Apr 18 02:36 catalog
    

注意,在计算文件或目录的初始权限时,不能直接使用最大默认权限和 umask 权限的数字形式做减法,这是不对的。例如,若 umask 默认权限的值为 033,按照数字形式计算文件的初始权限,666-033=633,但我们按照字母的形式计算会得到 (rw-rw-rw-) - (----wx-wx) = (rw-r--r--),换算成数字形式是 644。

这里的减法,其实是“遮盖”的意思,也就是说,最大默认权限中和 umask 权限公共的部分,通过减法运算会被遮盖掉,最终剩下的“最大默认权限”,才是最终赋予文件或目录的初始权限。

3.1 umask默认权限的修改方法

umask 权限值可以通过如下命令直接修改:

[root@localhost ~]# umask 002
[root@localhost ~]# umask
0002
[root@localhost ~]# umask 033
[root@localhost ~]# umask
0033

不过,这种方式修改的 umask 只是临时有效,一旦重启或重新登陆系统,就会失效。如果想让修改永久生效,则需要修改对应的环境变量配置文件 /etc/profile。例如:

[root@localhost ~]# vim /etc/profile
...省略部分内容...
if [ $UID -gt 199]&&[ "'id -gn'" = "'id -un'" ]; thenumask 002#如果UID大于199(普通用户),则使用此umask值
elseumask 022#如果UID小于199(超级用户),则使用此umask值
fi
…省略部分内容…

这是一段 Shell 脚本程序,不懂也没关系,大家只需要知道,普通用户的 umask 由 if 语句的第一段定义,而超级用户 root 的 umask 值由 else 语句定义即可。 修改此文件,则 umask 值就会永久生效。

参考

linux文件与文件夹权限整理(有关文件与文件夹权限、SUID、SGID、STICKY)

【linux命令】Linux 中文件和文件夹的权限 、ll命令、SGID、默认权限、umask相关推荐

  1. Linux 命令行中的文件名/文件路径中使用通配符的说明

    文章目录 支持通配符 通配符表达式示例 通配符使用限制 使用通配符表示的路径示例 带有空格的通配符或文件名必须加上引号 支持通配符 * 表示任意数量的任意字符 ? 表示任意单个字符 通配符表达式示例 ...

  2. matlab清空文件夹命令_matlab 中的删除文件

    Matlab中有两种删除文件的方式: 一种是删除文件     delete()函数      //可以使用help  delete命令查询delete()函数的使用方法 delete('p1.jpg' ...

  3. linux配置apache文件大小,linux下apache中httpd.conf文件配置参数说明

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 linux下的apache服务器,我想大家都不陌生吧,前面我也有讲过apache服务器的配置及注意,今天57号网络技术分享平台的小编将为大家带来apach ...

  4. linux ntfs 用户权限,Linux在NTFS中创建的文件的权限

    我正在尝试使用以下设置在 Linux中挂载NTFS文件系统: >在Linux中,NTFS中的所有文件和目录都应归root所有 并获得团体胜利.权限应设置为775. > Linux在NTFS ...

  5. linux ntfs 新建,Linux在NTFS中创建的文件的权限

    我正在尝试使用以下设置在 Linux中挂载NTFS文件系统: >在Linux中,NTFS中的所有文件和目录都应归root所有 并获得团体胜利.权限应设置为775. > Linux在NTFS ...

  6. 文件IO,open函数,O_CREAT的失误——默认权限,Linux文件的特殊权限T。

    0. 前言 哎呀,说着加快更新频率的,结果.推荐一个电影吧<憨豆先生的大灾难>. 1. open函数 看下说明. 有两种方式,区别就是带不带最后的参数mode,这个理解为权限的意思. 那什 ...

  7. linux mysql revoke_mysql中授权(grant)和撤销授权(revoke)等命令的用法详解

    MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器 授权->确定用户是否拥有足够的权限执行查询请求等. 如果认证不成功的话,哪么授权肯定是无法进行的. revo ...

  8. linux集群中删除的文件去哪里找回,恢复Linux误删除文件系列之extundelete工具

    下载安装 extundelete 之前要安装两个软件包 e2fsprogs 和 e2fsprogs-libs 安装顺序:e2fsprogs --> e2fsprogs-libs --> e ...

  9. linux使用windows中编辑的文件,格式问题

    参考:https://blog.csdn.net/yongan1006/article/details/8142527 运行脚本时出现了这样一个错误,打开之后并没有找到所谓的^M,查了之后才知道原来是 ...

  10. 在命令行中打开某个文件夹

    在macOS中使用 open 命令,如打开 ~/Download/abc open ~/User/ 在windows中使用start命令打开文件夹 start C:/

最新文章

  1. python、java实现二叉树,细说二叉树添加节点、深度优先(先序、中序、后续)遍历 、广度优先 遍历算法...
  2. mysql char null_关于mysql设置varchar 字段的默认值''和null的区别,以及varchar和char的区别...
  3. linux 实验2 进程创建,实验2Linux进程控制与通信
  4. 难道我的事,又要落空么。。。
  5. OpenCV编写视频文件的实例(附完整代码)
  6. Spark Streaming之:Flume监控目录下文件内容变化,然后Spark Streaming实时监听Flume,然后从其上拉取数据,并计算出结果
  7. DispatcherCore ,一个WPF异步操作常用功能库
  8. Android基础之Java多态、继承、重载和重写的区别
  9. java自学-基本数据类型
  10. Luogu4402 机械排序
  11. Android Browser学习九 快捷菜单模块: PieControl的架构
  12. Ubuntu 安装vim出错
  13. Github标星超7k!从零开始,最简明扼要的数据科学学习路径
  14. 怎么把几个PDF文件合并成一个PDF
  15. CentOS 8 升级内核
  16. opencv自动裁切_荐Python Opencv 之 简单的视频裁剪功能的实现
  17. Windows:MULTIPROCESSOR CONFIGURATION NOT SUPPORTED蓝屏(32位(win10/LTSC 2019/LTSC 2021))
  18. python实现读取文件英文词频统计并写入到文件
  19. 低调、爱独处、不爱说话的你有职场自闭症吗?
  20. 蓝桥杯算法训练——逗志凡的危机——动态规划+递归

热门文章

  1. 超好用的检测模块---SUI-101A交流变送器
  2. Android渣本毕业四年,面试小厂面试官说我可以试试大厂
  3. Java实现 蓝桥杯 算法提高 摩尔斯电码
  4. 【Vue】filter 过滤器用法
  5. swit-字符串01-字符串重新认识
  6. 其详细的告诉我区块链给商业银行带来的负面影响
  7. stringstream的使用方法
  8. Java并发工具学习(五)——CAS和final关键字
  9. PhotoShop CS6 在2K屏幕下标题菜单等字体太小
  10. 融云x白鲸《2022社交泛娱乐出海白皮书》