A página de manual diz:
execute/search only if the file is a directory or already has execute permission for some user (
X)
POSIX diz:
The perm symbol X shall represent the execute/search portion of the file mode bits if the file is a directory or if the current (unmodified) file mode bits have at least one of the execute bits (S_IXUSR, S_IXGRP, or S_IXOTH) set. It shall be ignored if the file is not a directory and none of the execute bits are set in the current file mode bits.
Este é um sinalizador de permissão condicional: chmod examina o que está processando atualmente e, se for um diretório, ou se tiver qualquer bit de execução definido em suas permissões atuais (proprietário, grupo ou outro), ele funcionará como se a permissão solicitada for x , caso contrário, ela será ignorada. A condição é verificada no momento em que chmod aplica a instrução X específica, para que você possa limpar os bits de execução na mesma execução com a-x,a=rwX para definir apenas o bit executável nos diretórios.
Você pode ver se um arquivo tem um bit de execução definido olhando a parte de "acesso" da saída de stat ou a primeira coluna de ls -l . Os bits de execução são representados por x . -rwxr-xr-x é comum para executáveis e indica que o bit executável está definido para o proprietário, grupo e outros usuários; -rw-r--r-- é comum para outros arquivos e indica que o bit executável não está definido (mas o bit de leitura está definido para todos e o bit de gravação para o proprietário). Consulte Noções básicas sobre as permissões do UNIX e seus atributos , que têm muito mais detalhes.
Assim, no seu exemplo, u=rwX define as permissões do proprietário para ler e gravar em todos os casos e, para diretórios e arquivos executáveis, executar; da mesma forma para o grupo ( g=rX ) e outros ( o=rX ), leia e execute para diretórios e arquivos executáveis.
A intenção deste operador é permitir que o usuário dê a chmod uma variedade de arquivos e diretórios, e obtenha as permissões de execução corretas (supondo que nenhum dos arquivos tenha um conjunto de bits de execução inválido). Evita ter que distinguir entre arquivos e diretórios (como nos comandos tradicionais find . -type f -exec chmod 644 {} + e find . -type d -exec chmod 755 {} + ) e tenta lidar com executáveis de uma maneira sensata.
(Observe que macOS chmod aparentemente suporta apenas X para + operações.)