'chmod u + x' contro 'chmod + x'


113

Qual'è la differenza tra chmod u+xe just chmod +x? Ho visto un sacco di tutorial che dicono di usare u+xper rendere eseguibili gli script. Tuttavia, omettere il unon sembra avere alcun effetto.

Risposte:


150

La pagina man di chmodcopre quella.

  • stai per utente.
  • g sta per gruppo.
  • o sta per altri.
  • a sta per tutti.

Ciò significa che chmod u+x somefileconcederà solo al proprietario le autorizzazioni di esecuzione del file, mentre chmod +x somefileè uguale a chmod a+x somefile.

La pagina man di chmod dice:

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.


Ho una piccola domanda, qual è la differenza tra a + x e diciamo 111. Rende entrambi eseguibili
TheBro21

Questo perché 1 è la notazione ottale che rappresenta il permesso di esecuzione. 111 significa eseguibile per utente, gruppo e altro.
Ottaviano Damiano il

Ottima risposta pulita
m4heshd,

L'effetto umask è importante, chmod +x filediverso da chmod a+x file- vedi la risposta di Ravexina per i dettagli.
Cinnam,

19

Basta fare +xlo applicherà a tutte le bandiere: [u] ser, [g] roup, [o] thers.

Digitare man chmodper ulteriori informazioni.


Prometto di aver prima controllato il manuale ma non l'ho visto da quando ho saltato la descrizione e sono passato alle opzioni. Li vedo ora però :-)
Nathan Schwermann

14

Requisiti

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.


Versione breve

  • chmod +xè uguale a chmod ugo+x(Basato sul umaskvalore)
  • chmod a+xè uguale a chmod ugo+x(senza considerare il umaskvalore)

Spiegazione

Il risultato di chmod a+xè di impostare il bit eseguibile per tutti (proprietario, gruppo, altri), giusto?

Tuttavia con chmod +xun po 'complicato, dice che usa il umaskvalore e in base a quel valore aggiungi il valore xa tutti coloro che sono autorizzati.

Quindi se il umaskmio ambiente è 0002:

$ umask
0002
$ umask -S
u=rwx,g=rwx,o=rx

Aggiungerà xall'utente (proprietario), al gruppo e ad altri, in questa situazione (che è la situazione predefinita per la maggior parte dei sistemi) è esattamente chmod ugo+xuguale 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+xe l'output di umask -S?

Ora cambiamo la umaskshell 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 +xora è uguale a chmod u+x,g+xo chmod ug+x.


Tempo delle domande!

Cosa succede se corro chmod +wsu un file dopo aver impostato umasksu 0003?

Stessa di prima, che riguarda solo usere groupdel file perché 3 rimuove anche il permesso di scrittura (2).


indennità

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

7

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 +xoppure 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.


scusa ma anche questa cosa non ha funzionato per me. L'ho provato con sudo e non ha funzionato sul mio computer. askubuntu.com/questions/178231/how-to-set-permission-in-ubuntu
Anirudha Gupta

@AnkitGupta Non sono sicuro di quello che stai dicendo. Il mio commento non intendeva risolvere un problema in una diversa domanda e risposta. Prova invece a chiedere chiarimenti alle risposte lì. Modifica la tua domanda per dire cosa hai provato. Mostra l'output.
belacqua,

1
  • chmod u+x filesignifica aggiungere il bit eseguibile al proprietario del file ignorando il umask(la tua mod sarà impostata, nessuna domanda).

  • chmod +x filesignifica aggiungere il bit eseguibile al proprietario, al gruppo e ad altri mentre si considera il umask(Controllare prima con umaskquindi 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 umaska "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, chmodignorato umaske 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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.