La manpage dice:
esegui / cerca solo se il file è una directory o ha già i permessi di esecuzione per alcuni utenti ( X
)
POSIX dice:
Il simbolo perm X deve rappresentare la parte di esecuzione / ricerca dei bit della modalità file se il file è una directory o se i bit della modalità file corrente (non modificata) hanno almeno uno dei bit di esecuzione (S_IXUSR, S_IXGRP o S_IXOTH) impostati. Deve essere ignorato se il file non è una directory e nessuno dei bit di esecuzione è impostato nei bit della modalità file corrente.
Questo è un flag di autorizzazione condizionale: chmod
guarda qualunque cosa stia attualmente elaborando, e se è una directory, o se ha un bit di esecuzione impostato nelle sue autorizzazioni correnti (proprietario, gruppo o altro), si comporta come se l'autorizzazione richiesta fosse x
, altrimenti lo ignora. La condizione verificata al momento chmod
applica l' X
istruzione specifica , quindi è possibile cancellare i bit di esecuzione nella stessa corsa con a-x,a=rwX
per impostare solo il bit eseguibile sulle directory.
Puoi vedere se un file ha un bit di esecuzione impostato guardando la parte "access" stat
dell'output o la prima colonna di ls -l
. I bit di esecuzione sono rappresentati da x
. -rwxr-xr-x
è comune per gli eseguibili e indica che il bit eseguibile è impostato per il proprietario, il gruppo e altri utenti; -rw-r--r--
è comune per altri file e indica che il bit eseguibile non è impostato (ma il bit di lettura è impostato per tutti e il bit di scrittura per il proprietario). Vedere Informazioni sulle autorizzazioni UNIX e sui relativi attributi, che contiene molti più dettagli.
Quindi, nel tuo esempio, u=rwX
imposta le autorizzazioni del proprietario per leggere e scrivere in tutti i casi e, per directory e file eseguibili, esegui; allo stesso modo per group ( g=rX
) e other ( o=rX
), leggere ed eseguire per directory e file eseguibili.
L'intento di questo operatore è consentire all'utente di fornire chmod
una varietà di file e directory e ottenere le autorizzazioni di esecuzione corrette (supponendo che nessuno dei file avesse un set di bit di esecuzione non valido). Evita di dover distinguere tra file e directory (come nella tradizione find . -type f -exec chmod 644 {} +
e nei find . -type d -exec chmod 755 {} +
comandi) e cerca di gestire gli eseguibili in modo ragionevole.
(Si noti che MacOSchmod
supporta apparentemente solo X
per +
le operazioni.)
---, ---, ---
un indoe senza un "bit set"?