-perm /a+x、-perm /a=x、-perm -a=x 和 -perm -a+x 与 find 之间有什么区别?

-perm /a+x、-perm /a=x、-perm -a=x 和 -perm -a+x 与 find 之间有什么区别?

我对所有这些选项都很困惑,因为我知道这-perm /a+x意味着文件对任何用户都具有可执行权限,并且-perm -a+x意味着文件必须对所有用户都具有可执行权限,但是a+x和之间有什么区别a=x

[user@j6727961 ~]$ find -name 'perm*' -perm /a+x
./perm
./perm1
[user@j6727961 ~]$ find -name 'perm*' -perm /a=x
./perm
./perm1
[user@j6727961 ~]$ ll
total 57280
drwxrwxr-x. 2 user user       54 Dec  9 20:06 exercises
-rwxrwxrwx. 1 user user        0 Dec 10 21:08 perm
----rwxrwx. 1 user user        0 Dec 10 21:09 perm1
[user@j6727961 ~]$ find -name 'perm*' -perm -a=x
./perm
[user@j6727961 ~]$ find -name 'perm*' -perm -a+x
./perm

答案1

为了将其与 find 一起使用,不会更改任何位,并且a=xa+x的含义相同。


但总的来说,这三个选项是(+mode 已弃用):

 mode    # exactly
-mode    # ALL bits SET
/mode    # ANY bit  SET

这意味着mode 760将搜索具有权限的文件确切地 760

A -mode 220(二进制 010 010 000 或 -w--w----)将搜索所有设置了所有者和组(两者)写入位以及设置了任何其他位的文件,这并不重要,
如 630(110 011 000 或 rw- -rx ---)。

并且 a/mode 220将与任何位设置匹配。
就像 220,230,360,270 一样,事实上:
任何(二进制)x1x x1x xxx,其中 x 表示“不关心”。

表达位集的另一种方法是:

a (for all)
u (for user)
g (for group) and
o (for others)

An 的a+r含义与设置(添加或二进制 OR)r-- r-- r-- 文件可能具有的权限相同。或者 a+x 表示(添加)--x--x--x 或 001001001 或 111。

因此,混合两者:

  • perm a+x ===> perm 111 ===> 一个只有权限 111 的文件
  • perm -a+x ===> perm -111 ===> 由 u(ser) g(roup) 执行其他的)
  • perm /a+x ===> perm /111 ===> 由 u(ser) g(roup) 执行或者 其他的)

a=xor仅对该a+x命令具有特定含义chmod。为用户更改执行位(设置它),即
:。但会清除用户的其他两位并仅设置执行位,从而使用户权限准确无误。 A将准确地或为用户设置这些位。 A也会做同样的事情。 u+xOR 100u=x1
chmod u+rwx file7rwx
chmod u=rwx file

对于 find 来说,不会改变任何位,a=xa+x的含义相同。

相关内容