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

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

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

  • Разрешить всем членам группы создавать каталоги и файлы
  • Будет ли zgrep рекурсивно искать zip-файлы, встроенные в zip-файлы?
  • Настройка разрешений для общей папки
  • Будет ли chmod 000 / dev / stdin отключить терминал навсегда?
  • chmod позволяет писать, когда я не устанавливаю его
  • Разрешения для файлов Sticky & User Execution
  • Первый пример:

     [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 

  • Каковы обычные разрешения файлов для каждого типа файлов до применения umask
  • chmod рекурсивное разрешение на тысячи файлов
  • Можно ли представить символическое разрешение + X с восьмеричным значением?
  • Сбросить бит setgid с числовым режимом chmod
  • Каталог отображается как файл?
  • Почему chmod требует дискового пространства? Не-местный алгоритм?
  • 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 на всех, с {} превращается во все пути.

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