chmod 大写X

大写执行权限X,加了怎么不显示呢

chmod(1) 手册页中对权限位的描述中提及到 rwxXst 六个权限标记, rwx 是几乎所有 Linux 初学者都会学到的,更进者会了解到 st 两个标记,但 X 却少有提起。所以大致了解了一下这个标记。

用一个最简单的 shell 脚本进行测试:

$ echo -e ‘#!/bin/sh\n\necho hello‘ > script.sh
$ ls -l script.sh
-rw-r--r-- 1 dawn users 22 Mar  3 23:52 script.sh
$ # 初始状态是没有执行权限的,这个时候 +X 试试
$ chmod a+X script.sh
$ ls -l script.sh
-rw-r--r-- 1 dawn users 22 Mar  3 23:52 script.sh
$ # 没有任何变化,并没有出现 X
$ ./script.sh
sh: ./script.sh: Permission denied
$ # 此时也无法执行
$ ########################################################
$ # u+x 后再试试
$ chmod u+x script.sh
$ ls -l script.sh
-rwxr--r-- 1 dawn users 22 Mar  3 23:52 script.sh
$ chmod a+X script.sh
-rwxr-xr-x 1 dawn users 22 Mar  3 23:52 script.sh
$ # 在 user 有执行权限的情况下执行 a+X 的效果和 a+x 相同

至此,我们已经可以对 X 有一些自己的了解了,笔者的想法是: chmod 中的 X 与 rwxst 不同,并不是真正意义的标识,而是 chmod 的一种行为,结合手册页中的解释,就是当文件是目录或对任意用户有执行权限的情况下,才设置执行权限位,即此时等价于 x,否则不改变执行权限。

所以,有了初步理解,我们就可以验证针对目录是否如此了。

$ mkdir -m 664 dir
$ ls -ld dir
drw-rw-r-- 2 dawn users 4096 Mar  4 00:09 dir
$ # 在该目录文件没有执行权限,此时尝试 a+X
$ chmod a+X dir
$ ls -ld dir
drwxrwxr-x 2 dawn users 4096 Mar  4 00:11 dir
$ # user、group 和 other 的执行权限成功被设置

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95576

(1)
涩葡桃涩葡桃
上一篇 2018-04-09 10:58
下一篇 2018-04-09 19:30

相关推荐

  • 计算机原理与Linux基础

    计算机的组成及功能 1、其实计算机的组织分为内部设备和外部设备, 内部设备:         CPU:运算器、寄存器、缓存         存储器:内存,RAM(Random Access Memory)         控制器:控制器是整个计算机系统的控制中心,它指挥计算机各部分协调地工作,保证计算机按照预先规定的目标和步骤有条不紊地进行操作及处理。 外部…

    Linux笔记 2018-05-13
  • Linux 的哲学思想

    Linux 的哲学思想: 一、Linux 系统,采用一切皆文件的思想,包括硬件设备(设备文件)与通讯方式。文件系统(FHS)采用树状结构,根目录只有一个,用户无不是在此树的节点上运作。 备注1:Linux中的所有设备都做为一个文件系统的一个节点来挂载和使用的。如光驱一般挂载在/mnt/cdrom中。 备注2:Linux系统按功能可分为: 1、操纵系统:用以控…

    Linux笔记 2018-06-21
  • linux基础3

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who | cut -d ‘ ‘ -f1 | sort -u root 2、取出最后登录到当前系统的用户的相关信息。 [root@localhost ~]# last -1 | id uid=0(root…

    Linux笔记 2018-07-08
  • linux发行版之间的爱恨情仇

    千丝万缕,森罗万象

    Linux笔记 2018-05-13
  • 第七周

    1、简述linux操作系统启动流程 inux系统启动流程大致是这样的: post ->BIOS(Boot Sequence) –> MBR(GRUB) –> Kernel(ramdisk) –> rootfs –> /sbin/init(/etc/inittab) BIOS 主板在接通电源后,BIOS会第一个获得系统的控制权。B…

    Linux笔记 2018-07-15