文件权限说明

Linux中的文件能否被访问和工具(程序)无关,和访问的用户身份有关(谁去运行这个程序)

进程的发起者(谁去运行这个程序)。

  • 进程的发起者若是文件的所有者: 拥有文件的属主权限
  • 进程的发起者若属于文件属组:拥有文件的属组权限
  • 应用文件“其它”权限

修改文件所有者、组

默认谁创建或传送的文件,所有者所属组默认是创建文件的时候从当前用户继承下来的

设置文件的所有者或所属组:chown

chown 命令可以修改属主也可以修改属组

选项:

-R:更改一个目录文件以及目录中的所有文件的属性

chown范例:

  • 只修改文件所有者: chown 所有者 file
  • 只修改文件所属组: chown (:)或(.)组名 file
  • 两者都修改: chown 所有者(:)或(.)所有组 file

设置文件所属组: chgrp

chgrp:只修改文件的属组

文件权限管理

将访问文件的用户分为三类:

  • owner 属主, u
  • group 属组, g
  • other 其他, o

    用户权限的匹配规则:从左到右匹配,匹配到了就不匹配了

三种权限类型:

  • r Readable
  • w Writable
  • x eXcutable

文件权限:

  • r:表示可以读取里面的内容
  • w:可以往文件里修改信息
  • x:可以执行这个文件(包括二进制程序、shell脚本等)

目录权限:

  • r:读取目录文件中的文件列表
  • w:能否在目录文件中删除和创建文件
  • x: 获取目录下文件的列表,和进入目录
  • X 只给目录x权限,不给无执行权限的文件x权限

    目录文件的最小权限: 执行权限x

    文件能否被删除和文件权限无关,而是和该文件所在目录文件的写(w)权限有关(因为目录文件的数据块部分是一个文件列表,这个文件列表记录该目录下的文件和该文件的inode number之间的映射关系)

目录的执行权限:可以获取目录中文件的列表,和进入目录。要对目录下存在的文件进行读取和修改,必须要进入目录,所以必须要目录有执行权限。

例如:要访问apache服务器上的某个目录下的文件,此目录必须要有执行权限。

1、目录的可执行权限是表示可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目录。即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)。

所以创建目录文件的时候给了x权限,也要给r权限

2、而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

目录可执行权限

实现获取文件列表和进入目录

进入目录: 要对目录中的文件进行读取和修改操作就必须要进入目录

可执行权限标识是否可以对目录执行命令或者在目录下执行命令

只有执行权限,没有可读权限 -- 可以进入目录但是无法读取文件列表

修改文件权限: chomod

文件的执行权限对root起作用,读和写对root用户无效

文件的所有者和文件所属组里面的用户、root用户可以修改文件的权限。

选项:

-R:同时更改目录文件以及目录文件下的所有文件的权限

X 只给目录x权限,不给无执行权限的文件x权限

方法一:模式法

who opt permission(谁对谁做什么操作)

who:u,g,o,a (a:all,所有)

opt:+,-,= (=:会修改用户的所有权限)

permission:r,w,x

例如:取消a文件的执行权限

chmod a-x file

方法二:数字法

数字法:用数字来描述文件的权限

chomod 数字 file

八进制数字:

  • --- 000 0
  • --x 001 1
  • -w- 010 2
  • -wx 011 3
  • r-- 100 4
  • r-x 101 5
  • rw- 110 6
  • rwx 111 7

    只要有奇数就肯定有执行权限

十进制数字法

范例:执行 cp /etc/issue /data/dir/ 所需要的最小权限?

/bin/cp 需要x权限

/etc/ 需要x权限

/etc/issue 需要r权限

/data 需要x权限

/data/dir 需要w,x权限

默认权限和特殊权限(root不受限)

新建文件的默认权限:

  • 文件:644
  • 目录文件:755

    默认权限是由 umask命令来影响的(显示的值是一个八进制)

非特权用户umask默认是 002



root的umask 默认是 022




最前面的0代表这是一个八进制数字

更改umask的值: umask number

文件默认权限的计算方法:

新建文件夹的默认权限: 666 - umask --- 得到的结果如果有执行权限(奇数),就将这一位+1

更改umask的值是临时生效的

使用666不使用777的原因:

使用666的原因是,如果使用777,umask设置成000,那么新建的文件就会有执行权限,默认带执行权限的文件很危险

加1的原因:

因为某一位是奇数的话就是带有执行权限了,默认创建的文件是要求不带执行权限的,所以要加1

目录文件默认权限计算方法:

新建目录文件的默认权限: 777- umask

Linux文件系统上的特殊权限

设置了特殊权限,可执行权限这个位置由x或者空变成s或S

  • SUID 作用于二进制可执行文件上,用户将继承此程序所有者的权限
  • SGID :

    若作用于二进制可执行文件上,用户将继承此程序所有组的权限

    若作于于目录上, 此目录中新建的文件的所属组将自动从此目录继承
  • STICKY 作用于目录上,此目录中的文件只能由所有者自已来删除

SUID

当我们的可执行文件具有suid权限以后,一个用户去运行这个可执行程序,他的身份就临时变成了这个可执行程序的所有者的身份

添加suid的方法:

  • 模式法:u+s

    chmod u+s filename
  • 数字法: 先写出传统权限 然后再加4

    比如: 传统权限是755 加suid权限后: 4755 --- rwsr-xr-x

    示例:chomod 4755 filename

SGID

作用一:用户运行这个程序的时候临时拥有所属组的权限

作用二: sgid加到一个目录文件上面,在这个目录文件里面创建的文件会继承这个目录文件得到所属组

添加SGID的方法:

  • 模式法:g+s

    chmod g+s filename
  • 数字法: 2

    chmod 2xxx filename

STICKY

此目录中的文件只能所有者来删除

添加STICKY的方法:

  • 模式法:o+t

    chmod o+t filename
  • 数字法: 1

    chmod 1xxx filename

    注意:一个文件能否访问和程序没有关系,和执行这个程序的用户身份有关系

Linux 文件权限相关知识的更多相关文章

  1. Linux文件权限基础知识

    一.文件权限概述 Linux中每个文件或目录都有一组一组9个基础权限位,每三位字符被分为一组,他们分别是属主权限位(占三个字符).用户组权限位(占三个字符).其他用户权限位(占三个字符).比如rwxr ...

  2. linux用户、文件权限相关命令

    root 现代操作系统一般属于多用户的操作系统,也就是说,同一台机器可以为多个用户建立账户,一般这些用户都是为普通用户,这些普通用户能同时登录这台计算机,计算机对这些用户分配一定的资源. 普通用户在所 ...

  3. Linux系统用户/用户组/文件权限相关

    目录一.Linux系统用户/用户组权限相关二.Linux系统文件权限相关 一.Linux系统用户/用户组权限相关 .命令:usermod 用法:usermod [-agGus] user args ‘ ...

  4. Linux文件权限和访问模式

    为了更加安全的存储文件,Linux为不同的文件赋予了不同的权限,每个文件都拥有下面三种权限: 所有者权限:文件所有者能够进行的操作 组权限:文件所属用户组能够进行的操作 外部权限(其他权限):其他用户 ...

  5. Linux:文件权限

    Linux:文件权限 1.文件权限 ☆文件所有者 ☆用户组 ☆其他人 ☆ROOT 说明: Linux系统中默认所有系统上的账号与一般身份用户,还有那个root的相关信息记录在/etc/passwd文件 ...

  6. Linux 文件权限于目录配置

    用户与用户组 我們以王三毛為例,王三毛這個『檔案』的擁有者為王三毛,他屬於王大毛這個群組, 而張小豬相對於王三毛,則只是一個『其他人(others)』而已. 不過,這裡有個特殊的人物要來介紹的,那就是 ...

  7. Linux文件权限与属性详解 之 SUID、SGID & SBIT

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

  8. Linux 文件夹相关常用命令

    Linux 文件夹相关常用命令 查看 ls -la -l 列出详细信息 -a 列出全部,包括.和.. 删除 rm <folder> -rf  -r  就是向下递归,不管有多少级目录,一并删 ...

  9. 说说Linux文件权限那些事儿

    文件全部权 显示文件的全部权 更改文件的全部权 文件的权限 改动文件的权限 用符号表示法改动 用数字表示法改动 使用umask指定默认的文件权限 參考文献 首先我们要知道Linux的标准文件权限和安全 ...

随机推荐

  1. Java学习day12

    Set集合特点:不能包含重复的元素:没有所有的方法,不能通过普通的for循环遍历集合 哈希值是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值,同一个对象多次调用hashCode()方法 ...

  2. Axios及其async await封装

    Axios(IE8+) 基于promise的http库可用于浏览器与node.js 1.特性 支持promise API 拦截请求和相应 转换请求数据和响应数据 取消请求 自动转换JSON数据 客户端 ...

  3. 2021.11.03 P2886 [USACO07NOV]Cow Relays G(矩阵+floyed)

    2021.11.03 P2886 [USACO07NOV]Cow Relays G(矩阵+floyed) [P2886 USACO07NOV]Cow Relays G - 洛谷 | 计算机科学教育新生 ...

  4. Qt(QtWebEngine)加载本地网页跨域问题的总结

    目录 1. 概述 2. 详论 2.1. 传参 2.2. JS module 3. 建议 4. 参考 1. 概述 浏览器直接加载本地网页的时候,如果网页涉及到加载本地资源(如图片),会出现跨域的问题.Q ...

  5. 超详干货!Linux 环境变量配置全攻略

    点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! Linux环境变量配置 在自定义安装软件的时候,经常需要 ...

  6. RabbitMQ 3.9( 续 )

    前言 基础篇链接:https://www.cnblogs.com/xiegongzi/p/16229678.html 3.9.延迟队列 - 重要 3.9.1.延迟队列概念 这个玩意儿要表达的意思其实已 ...

  7. redis 2 主从和哨兵

    主从: 概念:将一台redis服务器数据复制到其他redis服务器,前者是master,后者是slave.数据复制是单向,从主节点复制到从节点.master以写为主,slave以读为主一个zhu主节点 ...

  8. 面试官问:Go 中的参数传递是值传递还是引用传递?

    一个程序中,变量分为变量名和变量内容,变量内容的存储一般会被分配到堆和栈上.而在 Go 语言中有两种传递变量的方式值传递和引用传递.其中值传递会直接将变量内容附在变量名上传递,而引用传递会将变量内容的 ...

  9. 渗透:Nmap

    Nmap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包. nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端.确定哪些服务运行在哪些连接端,并且推断计算 ...

  10. 流,用声明性的方式处理数据集 - 读《Java 8实战》

    引入流 Stream API的代码 声明性 更简洁,更易读 可复合 更灵活 可并行 性能更好 流是什么? 它允许以声明方式处理数据集合 遍历数据集的高级迭代器 透明地并行处理 简短定义:从支持数据处理 ...