Linux 命令之 chmod:修改权限

在 Linux 命令中,chmod用于修改文件或者目录的权限。对于文件或者目录的普通权限,共有 3 种,分别为:

  • r:读取;
  • w:写入;
  • x:执行。

此外,还有 3 种特殊权限,分别为:

  • suid:Set User ID;
  • sgid:Set Group ID;
  • sticky:粘滞位。

在此,我们仅介绍如何利用chmod修改文件及目录的普通权限。

权限范围及代号

文件及目录的权限范围,包括:

  • u:User,即文件或目录的拥有者;
  • g:Group,即文件或目录的所属群组;
  • o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
  • a:All,即全部的用户,包含拥有者、所属群组以及其他用户。

权限的代号包括:

  • r:读取权限,数字代号为4
  • w:写入权限,数字代号为2
  • x:执行或切换权限,数字代号为1
  • -:不具任何权限,数字代号为0
  • s:当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限。

语法及选项说明

  • chmod语法:
    • chmod [-cfRv][--help][--version][<权限范围>+/-/=<权限设置...>][文件或目录...]
    • chmod [-cfRv][--help][--version][数字代号][文件或目录...]
    • chmod [-cfRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]
  • 选项说明:
    • -c--changes:效果类似-v参数,但仅返回更改的部分;
    • -f--quiet--silent:不显示错误信息;
    • -R--recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
    • -v--verbose:显示指令执行过程;
    • --help:显示在线帮助信息;
    • --reference=<参考文件或目录>:把指定文件或目录的权限全部设成和参考文件或目录的权限相同;
    • --version:显示版本信息;
    • <权限范围>+<权限设置>:开启权限范围的文件或目录的该项权限设置;
    • <权限范围>-<权限设置>:关闭权限范围的文件或目录的该项权限设置;
    • <权限范围>=<权限设置>:指定权限范围的文件或目录的该项权限设置。

示例

首先,我们通过ls -l命令来看看文件及目录的相关信息:

如上图所示,以其为例,我们依次来分析各内容代表的含义,

  • 第 1 行:total 16,表示所列出内容的磁盘占用空间总和值,单位为KB
  • 第 1 列:dr-xr-x-r-x,表示文件或目录的类型及权限;
  • 第 2 列: 4,表示文件或目录的链接个数;
  • 第 3 列:bin.guo,表示文件或目录的所有者;
  • 第 4 列:staff,表示文件或目录的所在群组;
  • 第 5 列:136,表示文件或目录本身的大小;
  • 第 6 列:Nov 24 11:26,表示文件或目录的最后更新时间;
  • 第 7 列:a,表示文件或目录的名称。

其中 第 1 列 的内容(除total外)特别丰富,以dr-xr-x-r-x为例(共 10 个字符),我们对其进一步分析:

  • 第 1 个字符d,表示文件或目录的类型,其类型包括
    • p,表示命名管道文件;
    • d,表示目录文件;
    • l,表示符号连接文件;
    • -,表示普通文件;
    • s,表示 Socket 文件;
    • c,表示字符设备文件;
    • b,表示块设备文件。
  • 第 2 ~ 4 个字符r-x,表示文件或目录的所有者权限;
  • 第 5 ~ 7 个字符r-x,表示文件或目录的所有者同组用户权限;
  • 第 8 ~ 10 个字符r-x,表示文件或目录的其他用户权限。

此外,大家可能还注意到有些文件或目录在其显示的权限后面还跟着一个字符,或者为.或者为@,具体:

  • 在 Mac 终端中显示为@
  • 在 Linux 系统中显示为.

这表示其所属的文件或目录开启了SELinux安全上下文标签,如果没有,则表示未开启。

接下来,演示一些具体的操作示例:

  • 示例 1:添加所有用户对test-one的执行权限
  • 示例 2:取消test-one所有者群组用户的执行权限及其他用户的写入权限
  • 示例 3:递归取消文件夹a的所有用户的执行权限
  • 示例 4:添加所有用户对test-one的所有权限
  • 示例 5:取消test-one所有者的执行权限及其他用户的所有权限

在 Linux 的众多命令中,chmod命令算是比较简单的一个了。以此为始,让我们一起感受 Linux 的魅力吧!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏子勰随笔

Linux & MacOS中一些常用命令备忘

19060
来自专栏Java架构沉思录

每天学点Linux命令之umask

在进入今天的主题之前,我们先来回顾一下Linux文件权限的相关知识点。Linux里的文件权限可分为3组,分别是文件拥有者、同个群组的其他用户、不同群组的其他用户...

11710
来自专栏喵了个咪的博客空间

[喵咪BELK实战(2)] elasticsearch+kibana搭建

[喵咪BELK实战(2)] elasticsearch+kibana搭建 ? 前言 上一节我们介绍了日志系统和BELK之后就要到激动人心的安装环境了,实践出真知...

36670
来自专栏网络

JavaEE——jsp介绍

jsp介绍: jsp全称Java Server Page,它是Servlet的扩展,其作用就是简化网站创建过程和维护动态网站。 jsp运作原理: 浏览器访问in...

26970
来自专栏北京马哥教育

Corosync + Pacemaker 搭建高可用MariaDB服务

实验描述 本实验的目的是为了通过手动配置corosync配置文件,实现MariaDB服务的高可用,集群心跳传递使用组播方式。 三个节点的主机名分别为:node5...

459100
来自专栏ChaMd5安全团队

Struts2远程代码执行漏洞S2-052 复现&防御方案

0x00 前言 2017年9月5日晚间,Apache官方发布Struts 2紧急漏洞公告(S2-052), https://cwiki.apache.org/...

35190
来自专栏北京马哥教育

巧用HTTP 响应头部提高 Web 安全性

在 Web 服务器做出响应时,为了提高安全性,在 HTTP 响应头中可以使用的各种响应头字段。 1、X-Frame-Options 该响应头中用于控制是否在浏览...

35070
来自专栏逸鹏说道

ifconfig: command not found CentOS专版,其他的可以参考

ifconfig: command not found ? 查看path配置(echo相当于c中的printf,C#中的Console.WriteLine) e...

28280
来自专栏木子昭的博客

将Python程序(.py)转换为Windows可执行文件(.exe)第四步:运行测试

python开发者向普通windows用户分享程序,要给程序加图形化的界面(传送门:这可能是最好玩的python GUI入门实例! http://www.jia...

377100
来自专栏技术博文

php-fpm中启用慢日志配置(用于检测执行较慢的PHP脚本)

虽然通过nginx accesslog可以记录用户访问某个接口或者网页所消耗的时间,但是不能清晰地追踪到具体哪个位置或者说函数慢,所以通过php-fpm慢日志,...

469100

扫码关注云+社区

领取腾讯云代金券