Anda menggunakan -664
, gunakan saja 664
sebagai gantinya. Dan tidak pernah digunakan sudo
saat Anda tidak perlu melakukannya. Jika itu file Anda, Anda tidak perlu sudo
:
chmod 644 my_file
Ketika Anda menjalankan chmod
dengan -
sebelum mode, Anda akan menghapus mode itu. Lihat man chmod
(beri penekanan pada saya):
Operator + menyebabkan bit mode file yang dipilih ditambahkan ke bit mode file yang ada dari setiap file; - menyebabkan mereka dihapus ; dan = menyebabkan mereka ditambahkan dan menyebabkan bit yang tidak disebutkan harus dihapus kecuali bahwa bit ID pengguna dan grup yang tidak disebutkan direktori tidak terpengaruh.
Jumlahnya adalah:
- 1: eksekusi
- 2: tulis
- 4: baca
Jadi file dengan 777
izin berarti setiap orang memiliki hak untuk melakukan ketiganya, karena 1 + 2 + 4 = 7, dan karenanya menetapkan izin ke 7 berarti mengizinkan membaca, menulis, dan mengeksekusi.
Jika Anda mulai dengan file yang modenya adalah 777
:
$ ls -l my_file
-rwxrwxrwx 1 terdon terdon 0 May 28 13:45 my_file
Dan sekarang jalankan chmod -644
, Anda akan menghapus bit 644
, dan berakhir dengan file yang modenya adalah 133
:
$ chmod -644 my_file; ls -l my_file
---x-wx-wx 1 terdon terdon 0 May 28 13:45 my_file
Itu karena Anda menghapus 6 (baca (4) + tulis (2)) dari izin pemilik, hanya menyisakan 1 (eksekusi) yang ditetapkan, dan 4 (baca) dari grup dan izin lainnya. Hasilnya adalah file dengan hanya menjalankan (1) izin untuk pemilik, dan menulis dan mengeksekusi (Anda tidak mengatur 4, meninggalkan 1 dan 3) izin untuk sisanya.
Karena file Anda mungkin memiliki izin default untuk file baru, jadi 644
, ketika Anda berlari chmod -644 my_file
, Anda menghapus semua bit izin yang ditetapkan dan mendapatkan file tanpa izin untuk siapa pun.
$ 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
-
644 di depan? Cobasudo chmod 644 my_file
.-644
akan menghapus hak.