重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2441|回复: 0
打印 上一主题 下一主题

[系统管理] chmod 中的大写X到底有什么用?

[复制链接]
跳转到指定楼层
楼主
发表于 2018-4-7 13:01:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 郑全 于 2018-4-7 13:06 编辑

chmod(1) 手册页中对权限位的描述中提及到 rwxXst 六个权限标记, rwx 是几乎所有 Linux 初学者都会学到的,更进者会了解到 st 两个标记,但 X 却少有提起。所以笔者大致了解了一下这个标记。
手册中是这样描述 X 的:
execute/search only if the file is a directory or already has execute permission for some user (X)
只有在文件是目录或对一些用户已经有执行权限的时候执行/搜索?不知大家第一次见到这句解释时是如何理解的,笔者反正是懵逼的。所以这个时候需要一番简单实验探索一下这个 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 的执行权限成功被设置
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-4-26 14:01 , Processed in 0.108692 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表