文件权限说明

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. Vagrant详细教程

    一.安装virtualBox 进入 VirtualBox 的主页,即可进入下载页面. VirtualBox 是一个跨平台的虚拟化工具,支持多个操作系统,根据自己的情况选择对应的版本下载即可. 在安装完 ...

  2. hibernate查询不到关联对象列表-fetchType的选择

    概述 昨天排查问题的时候,发现使用hibernate关联对象时,订单实体类对象死活无法获取关联的订单明细列表 Order order = orderDao.findById(201L); //明明数据 ...

  3. C#使用进程调用bash,不断往bash内插入命令并执行

    呃呃呃,遇到了一个非常恶心得问题,现在就是,有几十万条数据需要当作参数调用python脚本 一次一次输入命令过去缓慢,经过了多层考虑决定使用进程来解决(不知道线程怎么开启bash得) 原理非常简单,类 ...

  4. [题解] 51 nod 1340 地铁环线

    不难看出这是一道差分约束的题目. 但是如果想按照通常的题目那样去建边的话,就会发现这句话--相邻两站的距离至少是1公里--建边后就直接让整个题出现了负环(默认是按求最短路建边),没法做了. 这时我们就 ...

  5. vue - Vue脚手架/TodoList案例

    今天做了一个案例,可以好好做做能够将之前的内容结合起来,最主要的是能对组件化编码流程有一个大概的清晰认知,这一套做下来,明天自己再做一遍复习一下,其实组件化流程倒是基本上没什么问题了,主要是很多vue ...

  6. 《Java编程思想》读书笔记(二)

    三年之前就买了<Java编程思想>这本书,但是到现在为止都还没有好好看过这本书,这次希望能够坚持通读完整本书并整理好自己的读书笔记,上一篇文章是记录的第一章到第十章的内容,这一次记录的是第 ...

  7. drools的简单入门案例

    一.背景 最近在学习规则引擎drools,此处简单记录一下drools的入门案例. 二.为什么要学习drools 假设我们存在如下场景: 在我们到商店购买衣服的时候,经常会发生这样的事情,购买1件不打 ...

  8. mysql外键,锁

    mysql外键: 场景:用于建立两个表之间的联系,让A表中一个字段,可以在另一个表中字段值的范围去查找 注意事项: (1)被参照表和参照表字段属性必须一致 (2)参照表必须设置主键 (3)必须选择支持 ...

  9. 【多线程】观测线程状态 getState()

    观测线程状态 getState() Thread.State(查看JDK帮助文档) 线程状态.线程可以处于以下状态之一: [NEW] 尚未启动的线程处于此状态. [RUNNABLE] 在Java虚拟机 ...

  10. 1.Spring开发环境搭建——intellj

    1.在intellj中新建项目,选择JDK版本(1.8版本) 2.选择相关信息填写,注意Java版本要和上面步骤选择的版本一致. 3.选择springBoot版本,勾选Spring Web选项. 4. ...