转载自:http://blog.csdn.net/qq_35246620/article/details/78624256

在 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命令来看看文件及目录的相关信息:

lsl

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

  • 第 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的执行权限

xxxx

  • 示例 2:取消test-one所有者群组用户的执行权限及其他用户的写入权限

gxow

  • 示例 3:递归取消文件夹a的所有用户的执行权限

ccccc

  • 示例 4:添加所有用户对test-one的所有权限

777

  • 示例 5:取消test-one所有者的执行权限及其他用户的所有权限

670

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

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐