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
방법실행 비트를 설정합니다.
파일이 디렉터리이거나 현재(수정되지 않은) 파일 모드 비트에 실행 비트 중 하나 이상이 설정되어 있는 경우(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
{}