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
    • 最新
    • 标签
主页 / ubuntu / 问题 / 829716
Accepted
Sinoosh
Sinoosh
Asked: 2016-09-26 22:52:51 +0800 CST2016-09-26 22:52:51 +0800 CST 2016-09-26 22:52:51 +0800 CST

查找命令中“perm -mode”和“perm /mode”之间的差异

  • 772

我阅读了手册页,find但对我来说并不清楚。

find -perm -mode------>至少必须设置这些位才能使文件匹配

例如:find -perm -754查找 754,755,757,774,777

关于什么?find -perm /754 请举例说明

command-line
  • 2 2 个回答
  • 4676 Views

2 个回答

  • Voted
  1. Best Answer
    heemayl
    2016-09-26T22:58:36+08:002016-09-26T22:58:36+08:00

    它基本上是所有三个位 ( -mode) 和任何单个位 ( /mode) 权限 ( -perm) 子集测试之间的区别。

    • find -perm -mode:

      在这种情况下,文件所提到的权限位必须存在。例如,如果你这样做find -perm -666并且如果一个文件有776,它将被匹配。同样666, 777etc 也会被匹配,但665不会被匹配。总之,提到的(三个)位必须是权限位的子集。

    • find -perm /mode:

      在这里,任何一点子集都可以。例如,如果我们这样做find -perm /666,并且如果一个文件有644,则该文件将被匹配,因为用户权限位是6,并且我们正在寻找一个位子集。类似地,700将匹配 , 等,但不匹配 例如060,因为没有位包含所需权限位的任何子集。006444

    • 6
  2. Petunia
    2021-01-28T04:37:34+08:002021-01-28T04:37:34+08:00

    另一个答案正确解释了该find -perm -mode部分。find -perm /mode但是,此答案更正了有关该部件的错误声明。

    在这里,任何一点子集都可以。例如,如果我们确实找到 -perm /666,并且如果一个文件有 644,则该文件将被匹配,因为用户权限位是 6,我们正在寻找一个位子集。类似地,将匹配 700、060、006 等,但不匹配例如 444,因为没有位包含所需许可位的任何子集。

    第一句话是对的,但是,声称444不匹配的部分不是。

    -perm /mode如果任何权限位匹配,则匹配,而不是整数。

    当传递 /666 时,我们要求find命令查找具有以下任何位的文件rw-rw-rw(6 = 4+2,这意味着 rw-)。因此,它将匹配任何类型的所有者(用户、组或其他)可读或可写或两者兼有的任何文件。这意味着唯一不会匹配的文件是具有以下权限的文件:000, 001, 010, 011, 100, 101,110和111. 任何其他权限都将被匹配,-perm /666因为它会分配读或写标志。


    有关更多说明,请查看以下示例。

    for h in {0..7}; \
    do for i in {0..7}; \
    do for j in {0..7}; \
    do for k in {0..7}; \
    do \
    touch $h$i$j$k; \
    chmod $h$i$j$k $h$i$j$k; \
    done; \
    done; \
    done; \
    done 
    
    find -perm /666 -printf '%04m %M\n' | grep 444
    7444 -r-Sr-Sr-T
    6444 -r-Sr-Sr--
    5444 -r-Sr--r-T
    4447 -r-Sr--rwx
    4446 -r-Sr--rw-
    4445 -r-Sr--r-x
    4444 -r-Sr--r--
    4443 -r-Sr---wx
    4442 -r-Sr---w-
    4441 -r-Sr----x
    4440 -r-Sr-----
    3444 -r--r-Sr-T
    2444 -r--r-Sr--
    1444 -r--r--r-T
    0444 -r--r--r--
    

    所以它唯一不匹配的是权限不包含 2 或 4 的文件:即所有仅包含 1 或 0 的文件:

    # remove special permissions (since it was 0 every file that matches and only differs in the set of special permissions is found again)
    find \! -perm /666 -printf '%04m %M\n' | grep '^0'| sed 's/ .../ /g'
    0111 x--x--x
    0110 x--x---
    0101 x-----x
    0100 x------
    0011 ---x--x
    0010 ---x---
    0001 ------x
    0000 -------
    

    也许澄清一下:

    给予以下权限

    • WXYZ:文件权限(例如 0755 W=0, Z=5)
    • wxyz:搜索权限
    • 如果至少有一位匹配,则 w&W > 0

    /是一个 OR 操作: return w&W || x&X|| y&Y || z&Z

    即,如果文件包含与(至少)搜索的权限(wz)匹配的任何权限(WZ),则返回。

    while -是 AND 操作: return w&W && x&X && y&Y && z&Z

    即如果文件包含所有权限(WZ)匹配(至少)搜索的权限(wz),则返回。

    在这两种情况下,这可能意味着 W 设置了多于 w 位(6 组 2 和 4,但不是 3 或 1)

    • 1

相关问题

  • 如何从命令行仅安装安全更新?关于如何管理更新的一些提示

  • 如何从命令行刻录双层 dvd iso

  • 如何从命令行判断机器是否需要重新启动?

  • 文件权限如何工作?文件权限用户和组

  • 如何在 Vim 中启用全彩支持?

Sidebar

Stats

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

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve