'chmod -644' imposterà l'autorizzazione del file su 000


12

Avevo un file con 644 ( -rw-r--r--) e volevo cambiarlo in 664 ( -rw-rw-r--), dopo aver eseguito:

sudo chmod -664 my_file

le autorizzazioni per i file sono state impostate su 000 ( ----------).

Cercare di cambiare le autorizzazioni in qualcosa di diverso da 000 sembra non funzionare. Cosa mi sto perdendo qui?


11
Perché hai un -davanti a 644? Prova sudo chmod 644 my_file. -644rimuoverà i diritti.
Soren A

Risposte:


34

Stai usando -664, basta usare 664invece. E non usare maisudo quando non è necessario. Se questo è il tuo file, non hai bisogno di sudo:

chmod 644 my_file

Quando si esegue chmodcon un -prima della modalità, si rimuoverà quella modalità. Vedi man chmod(enfasi mia):

L'operatore + fa sì che i bit della modalità file selezionati vengano aggiunti ai bit della modalità file esistenti di ciascun file; - provoca la loro rimozione ; e = fa sì che vengano aggiunti e fa sì che i bit non indicati vengano rimossi, tranne per il fatto che i bit ID utente e gruppo impostati non menzionati di una directory non sono interessati.

I numeri sono:

  • 1: esegui
  • 2: scrivi
  • 4: leggi

Quindi un file con 777permessi significa che tutti hanno il diritto di fare tutti e tre, dal momento che 1 + 2 + 4 = 7, e quindi impostare i permessi su 7 significa consentire la lettura, la scrittura e l'esecuzione.

Se inizi con un file la cui modalità è 777:

$ ls -l my_file 
-rwxrwxrwx 1 terdon terdon 0 May 28 13:45 my_file

E ora esegui chmod -644, rimuoverai i bit 644e finirai con un file la cui modalità è 133:

$ chmod -644 my_file; ls -l my_file 
---x-wx-wx 1 terdon terdon 0 May 28 13:45 my_file

Questo perché hai rimosso 6 (leggi (4) + scrivi (2)) dalle autorizzazioni del proprietario, lasciando solo 1 (esegui) impostato e 4 (leggi) dal gruppo e altre autorizzazioni. Il risultato è un file con solo le autorizzazioni di esecuzione (1) per il proprietario e le autorizzazioni di scrittura ed esecuzione (non ripristinate 4, lasciando 1 e 3) per il resto.

Poiché presumibilmente il tuo file aveva le autorizzazioni predefinite per i nuovi file, quindi 644, quando lo hai eseguito chmod -644 my_file, hai rimosso tutti i bit di autorizzazione impostati e ottenuto un file senza autorizzazioni per nessuno.

$ ls -l my_file 
-rw-r--r-- 1 terdon terdon 0 May 28 13:45 my_file
$ chmod -644 my_file
$ ls -l my_file 
---------- 1 terdon terdon 0 May 28 13:45 my_file
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.