Stai usando -664
, basta usare 664
invece. E non usare maisudo
quando non è necessario. Se questo è il tuo file, non hai bisogno di sudo
:
chmod 644 my_file
Quando si esegue chmod
con 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 777
permessi 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 644
e 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
-
davanti a 644? Provasudo chmod 644 my_file
.-644
rimuoverà i diritti.