我对所有这些选项都很困惑,因为我知道这-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=x
和a+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=x
or仅对该a+x
命令具有特定含义chmod
。为用户更改执行位(设置它),即
:。但会清除用户的其他两位并仅设置执行位,从而使用户权限准确无误。 A将准确地或为用户设置这些位。 A也会做同样的事情。 u+x
OR 100
u=x
1
chmod u+rwx file
7
rwx
chmod u=rwx file
对于 find 来说,不会改变任何位,a=x
和a+x
的含义相同。