Почему chmod рекурсивно меняет права доступа к файлам?

Когда я делаю chmod _+x -R /dir где «_» – любая комбинация (u, g, o, a), если после выполнения chmod g+X -R /dir файлы также получают исполняемые разрешения.

Почему это происходит? Такое поведение происходит только в том случае, если я сначала использую нижний «х», а затем использую верхний «Х».

Первый пример:

 [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 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 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 использованием [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 использованием [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 

  • Разница между chmod и ACL
  • Рекурсивный chmod без sudo
  • Изменение разрешения чтения только в Linux?
  • Каталог отображается как файл?
  • Как навсегда изменить разрешение файла / каталога
  • устанавливает ли разрешение 0 в каталоге эффективным способом защиты его содержимого?
  • Минимальные права доступа к файлу для переименования файла
  • команда «chmod g + s»
  • One Solution collect form web for “Почему chmod рекурсивно меняет права доступа к файлам?”

    +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 на всех, с {} превращается во все пути.

    Interesting Posts
    Linux и Unix - лучшая ОС в мире.