AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 416877
Accepted
Arcticooling
Arcticooling
Asked: 2018-01-14 10:49:18 +0800 CST2018-01-14 10:49:18 +0800 CST 2018-01-14 10:49:18 +0800 CST

posix / chmod中的大写X是什么?

  • 772

我知道什么是ugoa(所有者、组、其他人、全部)或rwx(读取/正确/执行)或 4,2,1 或-, f, d, l,我试图阅读man chmod以了解什么是大写X,chmod但没有它的一个条目。然后我在 posix/chmod 中阅读了这篇文章,但被困在了这段话中:

仅当目标 a) 是目录 b) 已经为用户、组和其他中的任何一个设置了至少一个可执行位时,才设置可执行位。

我还在这篇文章中读到了这个代码示例:

chmod -R u=rwX,g=rX,o=rX testdir/

testdir/我知道关于所有者 (u)、组 (g) 和其他 (o)的 , 有递归权限,但我承认我仍然错过了大写 X 的意图。

也许这里的教学措辞可以对此有所了解(我在这里发表这篇文章的主要原因是因为我没有找到关于这个的 SE 会议)。

更新

对不起,我错过了那个男人。我没想到 X 会出现在参数列表之前,我认为搜索返回 x 而不是 X,我的错。

permissions chmod
  • 3 3 个回答
  • 15577 Views

3 个回答

  • Voted
  1. Best Answer
    Stephen Kitt
    2018-01-14T10:56:54+08:002018-01-14T10:56:54+08:00

    手册页说:

    仅当文件是目录或已对某些用户具有执行权限时才执行/搜索 ( X)

    POSIX说:

    如果文件是目录或当前(未修改的)文件模式位具有至少一个执行位(S_IXUSR、S_IXGRP 或 S_IXOTH)设置,则永久符号 X 应表示文件模式位的执行/搜索部分。如果文件不是目录并且在当前文件模式位中没有设置任何执行位,则应忽略它。

    这是一个条件权限标志:chmod查看它当前正在处理的任何内容,如果它是一个目录,或者它是否在其当前权限(所有者、组或其他)中设置了任何执行位,它就好像请求的权限是x,否则它会忽略它。chmod在应用特定指令时验证条件X,因此您可以在同一运行中清除执行位,a-x,a=rwX仅在目录上设置可执行位。

    您可以通过查看stat输出的“访问”部分或ls -l. 执行位由 表示x。-rwxr-xr-x对可执行文件通用,表示为所有者、组和其他用户设置了可执行位;-rw-r--r--其他文件通用,表示未设置可执行位(但为所有人设置了读取位,为所有者设置了写入位)。请参阅了解 UNIX 权限及其属性,其中包含更多详细信息。

    因此,在您的示例中,u=rwX将所有者权限设置为在所有情况下读取和写入,对于目录和可执行文件,执行;对于组 ( g=rX) 和其他 ( o=rX) 也是如此,读取和执行目录和可执行文件。

    该运算符的目的是允许用户提供chmod各种文件和目录,并获得正确的执行权限(假设没有一个文件设置了无效的执行位)。它避免了必须区分文件和目录(如在传统的find . -type f -exec chmod 644 {} +和find . -type d -exec chmod 755 {} +命令中),并尝试以合理的方式处理可执行文件。

    (请注意,macOSchmod显然只支持X操作+。)

    • 31
  2. user232326
    2018-01-14T11:19:09+08:002018-01-14T11:19:09+08:00

    来自man chmod:

    字母 rwxXst 为受影响的用户选择文件模式位:读(r)、写(w)、执行(或搜索目录)(x)、 仅当文件是目录或已经对某些文件具有执行权限时才执行/搜索用户 (X),在执行时设置用户或组 ID (s),限制删除标志或粘性位 (t)。

    (强调我的)。

    然而,这并没有很清楚地说明它。本文有两条规则来阐明它的作用:


    例如,我们对目录发出以下 chmod 命令:

    # chmod -R u=rwX,g=rX,o=rX testdir/`  
    

    使用大写的 X,上述命令根据以下两条规则设置可执行属性:

    1. 如果文件是一个目录,那么它为所有者、组和世界设置了可执行属性,这意味着他们可以进入这个目录。

    2. 如果该文件是一个普通文件,那么它会将可执行属性添加到其权限中,如果该文件已经设置了一些执行位。如果文件没有设置执行位,则不会添加。

    使用小写的 x 只用一个命令是不可能达到这个结果的。


    希望澄清X的使用。

    • 11
  3. user9303970
    2018-02-25T16:33:02+08:002018-02-25T16:33:02+08:00

    请不要点赞这个答案。这正是我从上面斯蒂芬基特的回答中所理解的,我认为这是正确的。


    1)大写的 Xa=rwX表示:找到的所有目录都将获得 x,并且在三个权限组之一中找到的所有常规文件至少具有 1 个可执行位,也将在所有三个组中获得 x。

    2)a-x(确保所有文件都丢失执行位)的组合,以及随后的a=rwX说:在任何地方获取读取和写入位,并且仅在目录上执行位。

    • 2

相关问题

  • 组权限如何工作?

  • Redis日志文件权限错误,但是权限已经是777

  • 以 root 权限启动 zypper 命令

  • 以非特权用户身份运行时,meld 无法访问 /dev/fd/* 的可能原因是什么?

  • 另一个用户的非空子目录是否可以安全地从我的目录中删除?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve