前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux 命令之 chmod:修改权限

Linux 命令之 chmod:修改权限

作者头像
CG国斌
发布2018-01-08 18:08:23
3K0
发布2018-01-08 18:08:23
举报
文章被收录于专栏:维C果糖维C果糖

在 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
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
xxxx
  • 示例 2:取消test-one所有者群组用户的执行权限及其他用户的写入权限
gxow
gxow
  • 示例 3:递归取消文件夹a的所有用户的执行权限
ccccc
ccccc
  • 示例 4:添加所有用户对test-one的所有权限
777
777
  • 示例 5:取消test-one所有者的执行权限及其他用户的所有权限
670
670

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-11-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 权限范围及代号
  • 语法及选项说明
  • 示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档