为了更加安全的存储文件,Linux为不同的文件赋予了不同的权限,每个文件都拥有下面三种权限:

  • 所有者权限:文件所有者能够进行的操作
  • 组权限:文件所属用户组能够进行的操作
  • 外部权限(其他权限):其他用户可以进行的操作。

查看文件权限

使用ls -l命令可以查看与文件权限相关的信息:

第一列就包含了文件或目录的权限

第一列和字符分为三组,每一组为三个,每个字符分别代表不同的权限,分别为读取(r)、写入(w)和执行(x);

第一组字符(2-4)表示文件所有者的权限

第二组字符(5-7)表示文件所属用户组的权限

第三组字符(8-10)表示所有其他用户的权限

文件访问模式

文件权限是Linux系统的第一道安全防线,基本的权限有读取(r)、写入(w)和执行(x):

  • 读取:用户能够读取文件信息,查看文件内容。
  • 写入:用户可以编辑文件,可以向文件写入内容,也可以删除文件内容。
  • 执行:用户可以将文件作为程序来运行。

目录访问模式

目录的访问模式和文件类似,但是稍有不同:

  • 读取:用户可以查看目录中的文件
  • 写入:用户可以在当前目录中删除文件或创建文件
  • 执行:执行权限赋予用户遍历目录的权利,例如执行 cd 和 ls 命令。

改变权限

可以使用 chmod (change mode) 命令来改变文件或目录的访问权限,权限可以使用符号或数字来表示。
使用符号表示权限
对于初学者来说最简单的就是使用符号来改变文件或目录的权限,你可以增加(+)和删除(-)权限,也可以指定特定权限(=)。

使用数字表示权限

除了符号,也可以使用八进制数字来指定具体权限,如下表表示

数字 说明 权限
0 没有任何权限 ---
1 执行权限 --x
2 写入权限 -w-
3 执行权限和写入权限:1 (执行) + 2 (写入) = 3 -wx
4 读取权限 r--
5 读取和执行权限:4 (读取) + 1 (执行) = 5 r-x
6 读取和写入权限:4 (读取) + 2 (写入) = 6 rw-
7 所有权限: 4 (读取) + 2 (写入) + 1 (执行) = 7 rwx

更改所有者和用户组

在Linux中,每添加一个新用户,就会为它分配一个用户ID和群组ID,上面提到的文件权限也是基于用户和群组来分配的。

有两个命令可以改变文件的所有者或群组:

  • chown:chown 命令是"change owner"的缩写,用来改变文件的所有者。
  • chgrp:chgrp 命令是"change group"的缩写,用来改变文件所在的群组。

chown命令用来更改文件所有者,其语法如下:

chown user filelist

user可以是用户名或ID

注意:超级用户root可以不受限制的更改文件的所有者和用户组,但是普通用户只能更改的所有者只能是自己的文件或目录。

chgrp命令用来改变文件所属群组,其语法如下:

chgrp group filelist

group可以是群组名或群组ID

SUID和SGID位

在Linux中,一些程序需要特殊权限才能完成用户指定的操作。

例如,用户的密码保存在 /etc/shadow 文件中,出于安全考虑,一般用户没有读取和写入的权限。但是当我们使用 passwd 命令来更改密码时,需要对 /etc/shadow 文件有写入权限。这就意味着,passwd 程序必须要给我们一些特殊权限,才可以向 /etc/shadow 文件写入内容。

Linux 通过给程序设置SUID(Set User ID)和SGID(Set Group ID)位来赋予普通用户特殊权限。当我们运行一个带有SUID位的程序时,就会继承该程序所有者的权限;如果程序不带SUID位,则会根据程序使用者的权限来运行。

SGID也是一样。一般情况下程序会根据你的组权限来运行,但是给程序设置SGID后,就会根据程序所在组的组权限运行。

如果程序设置了SUID位,就会在表示文件所有者可执行权限的位置上出现's'字母;同样,如果设置了SGID,就会在表示文件群组可执行权限的位置上出现's'字母。如下所示:

上面第一列第四个字符不是'x'或'-',而是's',说明 /usr/bin/passwd 文件设置了SUID位,这时普通用户会以root用户的权限来执行passwd程序。

注意:小写字母's'说明文件所有者有执行权限(x),大写字母'S'说明程序所有者没有执行权限(x)。

如果在表示群组权限的位置上出现SGID位,那么也仅有三类用户可以删除该目录下的文件:目录所有者、文件所有者、超级用户 root。

为一个目录设置SUID和SGID位可以使用下面的命令:

教程:4、文件权限和访问方式相关推荐

  1. linux文件的权限模式,Linux文件权限和访问模式

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

  2. linux文件访问权限,Linux文件权限和访问模式

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

  3. Liunx——文件权限操作

         第一个字符代表这个文件是『目录.文件或链接文件等等』: o 当为[ d ]则是目录,例如上表档名为『.config』的那一行: o 当为[ - ]则是文件,例如上表档名为『initial-s ...

  4. Centos7用户,组及文件权限管理

    Centos7安装完系统后如果没有创建用户,默认只有root用户,权限最大可以做任何事,但实际生产环境中我们一般不会使用这个用户,因为权限太大所有命令都能执行,很危险,所以在生产环境中会创建一个或者多 ...

  5. 教程示例:控制存储空间和文件夹的访问权限

    本教程示例详细演示了如何控制用户对 OSS 存储空间和文件夹的访问.在示例中,我们首先创建一个存储空间和文件夹,然后使用阿里云主账号创建访问管理 (RAM) 用户,并为这些用户授予对所创建 OSS 存 ...

  6. php 访问类成员,PHP类成员的访问方式和权限_PHP教程

    PHP5的访问方式允许限制对类成员的访问. 这是在PHP5中新增的功能,但在许多面向对象语言中都早已存在. 有了访问方式,才能开发一个可靠的面向对象应用程序,并且构建可重用的面向对象类库. 像C++和 ...

  7. linux两种方式改变文件权限,Linux更改文件权限的两种方式

    今天小编要跟大家分享一篇关于Linux更改文件权限的方式,喜欢Linux的小伙伴来看一看吧. 我们知道·Linux系统最主要的特点之一就是--Linux系统是多用户.多任务的操作系统. 何为多用户?就 ...

  8. 为什么我共享的文件别人看不到_【零基础学云计算】解析文件共享及访问方式...

    各位小伙伴大家好! 我们接上一篇的文件权限操作,接下来和各位小伙伴解析文件共享的操作方法. 我们首先使用管理员身份进入server2016系统,然后对我们之前在E盘中创建的abc的文件夹进行设置,右键 ...

  9. Linux 访问文件的acl信息,linux文件权限管理与ACL访问控制列表

    一.文件属性 1.文件属性: 文件属性操作 chown : change owner  ,设置文件所有者 chgrp : change group  ,设置文件的属组 文件属主修改: chown 格式 ...

最新文章

  1. Java类和对象基础题_java类和对象基础题2
  2. 计算机视觉算法——图像分类网络总结
  3. FAGLFLEXA 表和 BSEG 表有什么区别
  4. 【Java】 大话数据结构(13) 查找算法(4) (散列表(哈希表))
  5. 玩转oracle 11g(25):手工删除oracle归档日志后操作步骤 和修改用户默认解锁时间
  6. C++中文版本primer 第二章变量和基本类型 学习笔记
  7. 转载:35岁前成功的12条黄金法则
  8. 网站直达上线运营,API接口开发中
  9. rsync linux 教程,rsync 用法教程
  10. 最流行的十大开源云监控工具
  11. P1095 [NOIP2007 普及组] 守望者的逃离
  12. Antd 修改 Table 悬浮颜色、表头背景色
  13. 什么是ASP .NET?
  14. 富途证券面试整理--前端
  15. RationalDMIS 7.1建立工件坐标系的过程:必须尊守321法则
  16. IT科技行业发展现状,未来发展方向有哪些?
  17. mysql豹_MySQL创建数据库与创建用户以及授权 小帅豹
  18. 170 FPS!YolactEdge:边缘设备上的实时实例分割,已开源!
  19. 基础语法篇_11——坐标空间和转换,图形的保存和重绘,元文件
  20. 微信小程序自定义分享标题和图片

热门文章

  1. R语言glm拟合logistic回归模型实战:基于glm构建逻辑回归模型及模型系数统计显著性分析、每个预测因子对响应变量的贡献
  2. R语言ggplot2可视化:将dataframe和数据列名称传递给函数通过函数进行ggplot2可视化输出
  3. R语言names函数获取或者设置数据对象名称实战
  4. limma包分析差异表达基因
  5. php$SQL时间函数,PHP模拟SQL Server的两个日期处理函数-PHP教程,PHP应用
  6. R Learnilng 十八讲13-17
  7. MySql修改 表名
  8. <笔记2>numpy的生成随机数用法小记
  9. access mysql字段对应_ACCESS数据库中表与字段名称修改
  10. google浏览器插件安装时出错,Package is invalid: CRX HEADER INVALID