zoukankan      html  css  js  c++  java
  • chmod 与大写 X

    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
    
    echo 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 的执行权限成功被设置
    

    本文原创并同时发布于成理 LUG 主站,链接:https://blog.cdutlug.org/2018/03/chmod-and-capital-x/

  • 相关阅读:
    win10快速搭建git服务
    java字节流转对象,应用于协议解析
    产品设计-后台管理权限设计RBAC
    Git :fatal: 错误提示解决办法
    初学git,出现错误:fatal: Not a git repository (or any of the parent directories): .git
    css 清除浮动
    asp.net连接SQL SERVER 2012的方法
    c#的序列化与反序列化
    .NET三层架构例子超链接可以点击显示内容页面
    ASP.NET中iframe框架点击左边页面链接,右边显示链接页面内容
  • 原文地址:https://www.cnblogs.com/dawn-l/p/chmod-and-capital-x.html
Copyright © 2011-2022 走看看