Qual'è la differenza tra chmod u+x
e just chmod +x
? Ho visto un sacco di tutorial che dicono di usare u+x
per rendere eseguibili gli script. Tuttavia, omettere il u
non sembra avere alcun effetto.
Qual'è la differenza tra chmod u+x
e just chmod +x
? Ho visto un sacco di tutorial che dicono di usare u+x
per rendere eseguibili gli script. Tuttavia, omettere il u
non sembra avere alcun effetto.
Risposte:
La pagina man di chmod
copre quella.
Ciò significa che chmod u+x somefile
concederà solo al proprietario le autorizzazioni di esecuzione del file, mentre chmod +x somefile
è uguale a chmod a+x somefile
.
Il formato di una modalità simbolica è
[ugoa...][[+-=][rwxXstugo...]...][,...]
. È possibile fornire più operazioni simboliche, separate da virgole.Una combinazione delle lettere 'ugoa' controlla quale accesso degli utenti al file verrà modificato: l'utente che lo possiede (u), altri utenti nel gruppo del file (g), altri utenti non nel gruppo del file (o), o tutti gli utenti (a). Se nessuno di questi viene dato, l'effetto è come se fosse dato 'a', ma i bit impostati nell'ombra non sono interessati.
chmod +x file
diverso da chmod a+x file
- vedi la risposta di Ravexina per i dettagli.
Basta fare +x
lo applicherà a tutte le bandiere: [u] ser, [g] roup, [o] thers.
Digitare man chmod
per ulteriori informazioni.
Prima di tutto ti suggerisco di leggere queste domande e le risposte collegate di seguito:
Ti aiuta a capire tutte le parti necessarie che devi sapere.
chmod +x
è uguale a chmod ugo+x
(Basato sul umask
valore)chmod a+x
è uguale a chmod ugo+x
(senza considerare il umask
valore)Il risultato di chmod a+x
è di impostare il bit eseguibile per tutti (proprietario, gruppo, altri), giusto?
Tuttavia con chmod +x
un po 'complicato, dice che usa il umask
valore e in base a quel valore aggiungi il valore x
a tutti coloro che sono autorizzati.
Quindi se il umask
mio ambiente è 0002
:
$ umask
0002
$ umask -S
u=rwx,g=rwx,o=rx
Aggiungerà x
all'utente (proprietario), al gruppo e ad altri, in questa situazione (che è la situazione predefinita per la maggior parte dei sistemi) è esattamente chmod ugo+x
uguale o uguale a chmod a+x
, o in una forma più dettagliata:
chmod u+x,g+x,o+x
Riesci a individuare la connessione tra chmod u+x,g+x,o+x
e l'output di umask -S
?
Ora cambiamo la umask
shell corrente in 0003
:
$ umask 0003
$ umask
0003
$ umask -S
u=rwx,g=rwx,o=r
Come puoi vedere ora solo il proprietario e il gruppo otterranno il bit eseguibile e non gli altri. Significa che chmod +x
ora è uguale a chmod u+x,g+x
o chmod ug+x
.
Cosa succede se corro chmod +w
su un file dopo aver impostato umask
su 0003
?
Stessa di prima, che riguarda solo user
e group
del file perché 3 rimuove anche il permesso di scrittura (2).
Ha lo stesso effetto quando si rimuove un po 'come chmod -w
:
$ mkdir test
$ stat -c %A test
drwxrwxr-x
$ umask
0002
$ chmod +w test
$ stat -c %A test
drwxrwxr-x
$ chmod a+w test
$ stat -c %A test
drwxrwxrwx
$ chmod -w test
chmod: test/: new permissions are r-xr-xrwx, not r-xr-xr-x
$ stat -c %A test
dr-xr-xrwx
chmod u+x
renderà il file eseguibile per il tuo utente (lo aggiungerà solo per il tuo utente, anche se potrebbe essere già eseguibile dal proprietario del gruppo o "altro").
chmod +x
oppure chmod a+x
('all plus bit eseguibile') rende il file eseguibile da tutti.
Se lo fai in una directory, la ricerca sarà invece ricercabile. Vale a dire, è possibile elencare il contenuto di una directory per cui si dispone dell'autorizzazione + x.
chmod u+x file
significa aggiungere il bit eseguibile al proprietario del file ignorando il umask
(la tua mod sarà impostata, nessuna domanda).
chmod +x file
significa aggiungere il bit eseguibile al proprietario, al gruppo e ad altri mentre si considera il umask
(Controllare prima con umask
quindi applicare le mod, potrebbe avere effetti diversi in base al valore di umask).
creiamo due file:
$ touch file1 file2
$ ls -l file1 file2
-rw-rw-rw- 1 ravexina ravexina 0 Aug 5 01:45 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug 5 01:45 file2
Ora ho impostato la umask
a "111" per rimuovere i bit eseguibili: umask 111
.
$ chmod u+x file1
$ chmod +x file2
$ ls -l file1 file2
-rwxrw-rw- 1 ravexina ravexina 0 Aug 5 01:47 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug 5 01:47 file2
Come puoi vedere, chmod
ignorato umask
e file1 ha ottenuto il bit eseguibile per il suo proprietario, tuttavia il secondo non ha fatto nulla perché sta prendendo in considerazione il valore di umask.