
chmod _+x -R /dir
「_」が(u、g、o、a)の組み合わせの場合、実行するとファイルchmod g+X -R /dir
に実行権限も付与されます。
なぜこれが起こるのですか?この動作は、低い「x」を最初に使用し、次に高い「X」を使用した場合にのみ発生します。
最初の例:
[root@jesc5161 home]# chmod a-rwx -R finance/
[root@jesc5161 home]# ll
total 4
drwxr-xr-x. 3 root root 17 May 2 2015 ec2-user
d---------. 3 root finance 65 Apr 22 22:12 finance
drwx------. 9 user user 4096 Apr 22 21:28 user
[root@jesc5161 home]# ll finance/
total 0
d---------. 2 root root 6 Apr 22 21:41 accounting
----------. 1 user user 0 Apr 22 22:06 myfile1
----------. 1 user finance 0 Apr 22 22:12 myfile2
----------. 1 user user 0 Apr 22 22:12 myfile3
[root@jesc5161 home]# chmod u+x -R finance/
[root@jesc5161 home]# ll
total 4
drwxr-xr-x. 3 root root 17 May 2 2015 ec2-user
d--x------. 3 root finance 65 Apr 22 22:12 finance
drwx------. 9 user user 4096 Apr 22 21:28 user
[root@jesc5161 home]# ll finance/
total 0
d--x------. 2 root root 6 Apr 22 21:41 accounting
---x------. 1 user user 0 Apr 22 22:06 myfile1
---x------. 1 user finance 0 Apr 22 22:12 myfile2
---x------. 1 user user 0 Apr 22 22:12 myfile3
ここでは、グループに実行権限を付与したいのですが、ファイルにも実行権限が付与されます。
[root@jesc5161 home]# chmod g+X -R finance/
[root@jesc5161 home]# ll
total 4
drwxr-xr-x. 3 root root 17 May 2 2015 ec2-user
d--x--x---. 3 root finance 65 Apr 22 22:12 finance
drwx------. 9 user user 4096 Apr 22 21:28 user
[root@jesc5161 home]# ll finance/
total 0
d--x--x---. 2 root root 6 Apr 22 21:41 accounting
---x--x---. 1 user user 0 Apr 22 22:06 myfile1
---x--x---. 1 user finance 0 Apr 22 22:12 myfile2
---x--x---. 1 user user 0 Apr 22 22:12 myfile3
他の例:
[root@jesc5161 home]# chmod a-rwx -R finance/
[root@jesc5161 home]# ll
total 4
drwxr-xr-x. 3 root root 17 May 2 2015 ec2-user
d---------. 3 root finance 65 Apr 22 22:12 finance
drwx------. 9 user user 4096 Apr 22 21:28 user
[root@jesc5161 home]# ll finance/
total 0
d---------. 2 root root 6 Apr 22 21:41 accounting
----------. 1 user user 0 Apr 22 22:06 myfile1
----------. 1 user finance 0 Apr 22 22:12 myfile2
----------. 1 user user 0 Apr 22 22:12 myfile3
[root@jesc5161 home]# chmod u+rwx -R finance/
[root@jesc5161 home]# ll
total 4
drwxr-xr-x. 3 root root 17 May 2 2015 ec2-user
drwx------. 3 root finance 65 Apr 22 22:12 finance
drwx------. 9 user user 4096 Apr 22 21:28 user
[root@jesc5161 home]# ll finance/
total 0
drwx------. 2 root root 6 Apr 22 21:41 accounting
-rwx------. 1 user user 0 Apr 22 22:06 myfile1
-rwx------. 1 user finance 0 Apr 22 22:12 myfile2
-rwx------. 1 user user 0 Apr 22 22:12 myfile3
今回もグループに実行権限のみを付与したいのですが、ファイルにも実行権限が付与されます。
[root@jesc5161 home]# chmod g+X -R finance/
[root@jesc5161 home]# ll
total 4
drwxr-xr-x. 3 root root 17 May 2 2015 ec2-user
drwx--x---. 3 root finance 65 Apr 22 22:12 finance
drwx------. 9 user user 4096 Apr 22 21:28 user
[root@jesc5161 home]# ll finance/
total 0
drwx--x---. 2 root root 6 Apr 22 21:41 accounting
-rwx--x---. 1 user user 0 Apr 22 22:06 myfile1
-rwx--x---. 1 user finance 0 Apr 22 22:12 myfile2
-rwx--x---. 1 user user 0 Apr 22 22:12 myfile3
以下は「動作します」の例です。しかし、見てわかるように、上部の「X」を使用する前に下部の「x」を使用しないでください。
[root@jesc5161 home]# chmod a-rwx -R finance/
[root@jesc5161 home]# ll
total 4
drwxr-xr-x. 3 root root 17 May 2 2015 ec2-user
d---------. 3 root finance 65 Apr 22 22:12 finance
drwx------. 9 user user 4096 Apr 22 21:28 user
[root@jesc5161 home]# ll finance/
total 0
d---------. 2 root root 6 Apr 22 21:41 accounting
----------. 1 user user 0 Apr 22 22:06 myfile1
----------. 1 user finance 0 Apr 22 22:12 myfile2
----------. 1 user user 0 Apr 22 22:12 myfile3
[root@jesc5161 home]# chmod a+rw -R finance/
[root@jesc5161 home]# ll
total 4
drwxr-xr-x. 3 root root 17 May 2 2015 ec2-user
drw-rw-rw-. 3 root finance 65 Apr 22 22:12 finance
drwx------. 9 user user 4096 Apr 22 21:28 user
[root@jesc5161 home]# ll finance/
total 0
drw-rw-rw-. 2 root root 6 Apr 22 21:41 accounting
-rw-rw-rw-. 1 user user 0 Apr 22 22:06 myfile1
-rw-rw-rw-. 1 user finance 0 Apr 22 22:12 myfile2
-rw-rw-rw-. 1 user user 0 Apr 22 22:12 myfile3
[root@jesc5161 home]# chmod g+X -R finance/
[root@jesc5161 home]# ll
total 4
drwxr-xr-x. 3 root root 17 May 2 2015 ec2-user
drw-rwxrw-. 3 root finance 65 Apr 22 22:12 finance
drwx------. 9 user user 4096 Apr 22 21:28 user
[root@jesc5161 home]# ll finance/
total 0
drw-rwxrw-. 2 root root 6 Apr 22 21:41 accounting
-rw-rw-rw-. 1 user user 0 Apr 22 22:06 myfile1
-rw-rw-rw-. 1 user finance 0 Apr 22 22:12 myfile2
-rw-rw-rw-. 1 user user 0 Apr 22 22:12 myfile3
[root@jesc5161 home]# chmod o+X -R finance/
[root@jesc5161 home]# ll
total 4
drwxr-xr-x. 3 root root 17 May 2 2015 ec2-user
drw-rwxrwx. 3 root finance 65 Apr 22 22:12 finance
drwx------. 9 user user 4096 Apr 22 21:28 user
[root@jesc5161 home]# ll finance/
total 0
drw-rwxrwx. 2 root root 6 Apr 22 21:41 accounting
-rw-rw-rw-. 1 user user 0 Apr 22 22:06 myfile1
-rw-rw-rw-. 1 user finance 0 Apr 22 22:12 myfile2
-rw-rw-rw-. 1 user user 0 Apr 22 22:12 myfile3
[root@jesc5161 home]# chmod u+X -R finance/
[root@jesc5161 home]# ll
total 4
drwxr-xr-x. 3 root root 17 May 2 2015 ec2-user
drwxrwxrwx. 3 root finance 65 Apr 22 22:12 finance
drwx------. 9 user user 4096 Apr 22 21:28 user
[root@jesc5161 home]# ll finance/
total 0
drwxrwxrwx. 2 root root 6 Apr 22 21:41 accounting
-rw-rw-rw-. 1 user user 0 Apr 22 22:06 myfile1
-rw-rw-rw-. 1 user finance 0 Apr 22 22:12 myfile2
-rw-rw-rw-. 1 user user 0 Apr 22 22:12 myfile3
答え1
+X
方法実行ビットを設定します。
ファイルがディレクトリである場合、または現在(変更されていない)ファイルモードビットに実行ビットの1つ以上が設定されている場合(S_IXUSR、S_IXGRP、またはS_IXOTH)、ファイルがディレクトリではなく現在のファイルモードビットに実行ビットが設定されていない場合は無視する必要があります。します。
実行されると、chmod -R _+x dir
各ファイルの少なくとも一部のユーザー/グループ/その他(変更権限を持つ)に対して実行ビットが設定されます。これは、-X
これらすべてのファイルでも機能することを意味します。
ディレクトリにのみ影響し、ツリーに他の実行可能ファイルがない場合は、他の変更を+X
行う前にこのコマンドを実行できます。そうでなければ利用できるfind
:
find dir -type d -exec echo chmod g+x {} \+
-type d
その後、()内のすべてのディレクトリを見つけて、そのディレクトリに対してすべての操作を実行し、dir
すべてのパスを変換します。echo chmod g+x
{}