'chmod -644' akan menetapkan izin file ke 000

12

Saya punya file dengan 644 ( -rw-r--r--) dan ingin mengubahnya ke 664 ( -rw-rw-r--), setelah menjalankan:

sudo chmod -664 my_file

izin file ditetapkan ke 000 ( ----------).

Mencoba mengubah izin untuk sesuatu yang berbeda dari 000 tampaknya tidak berfungsi. Apa yang kulewatkan di sini?

illgoforit
sumber
11
Mengapa Anda memiliki -644 di depan? Coba sudo chmod 644 my_file. -644akan menghapus hak.
Soren A

Jawaban:

34

Anda menggunakan -664, gunakan saja 664sebagai gantinya. Dan tidak pernah digunakan sudosaat Anda tidak perlu melakukannya. Jika itu file Anda, Anda tidak perlu sudo:

chmod 644 my_file

Ketika Anda menjalankan chmoddengan -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 777izin 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
terdon
sumber