'chmod -644' dosya iznini 000 olarak ayarlar


12

644 ( -rw-r--r--) ile bir dosya vardı ve -rw-rw-r--çalıştırdıktan sonra 664 ( ) değiştirmek istedim :

sudo chmod -664 my_file

dosya izinleri 000 ( ----------) olarak ayarlandı .

İzinleri 000'den farklı bir şeyle değiştirmeye çalışmak işe yaramıyor gibi görünüyor. Burada ne eksik?


11
Neden -644'ün önünde bir tane var ? Deneyin sudo chmod 644 my_file. -644hakları kaldıracak.
Soren A

Yanıtlar:


34

Kullanıyorsunuz -664, sadece kullanın 664. Ve ihtiyacınız olmadığında asla kullanmayın sudo. Dosyanız buysa, aşağıdakilere ihtiyacınız yoktur sudo:

chmod 644 my_file

Moddan önce chmoda ile koştuğunuzda -, o modu kaldırırsınız. Bakınız man chmod(vurgu mayını):

Operatör +, seçilen dosya modu bitlerinin her bir dosyanın mevcut dosya modu bitlerine eklenmesine neden olur; - bunların çıkarılmasına neden olur ; ve = bunların eklenmesine neden olur ve dizinin belirtilmemiş ayarlanmış kullanıcı ve grup kimliği bitlerinin etkilenmemesi dışında sözü edilmeyen bitlerin kaldırılmasına neden olur.

Sayılar:

  • 1: yürüt
  • 2: yazma
  • 4: okuyun

Böylece 777izinleri olan bir dosya, herkesin üçünün hepsini yapma hakkına sahip olduğu anlamına gelir, çünkü 1 + 2 + 4 = 7 ve bu nedenle izinleri 7 olarak ayarlamak, okuma, yazma ve yürütmeye izin vermek anlamına gelir.

Modu olan bir dosya ile başlarsanız 777:

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

Ve şimdi çalıştırın chmod -644, bitleri kaldıracak 644ve modu olan bir dosya ile sonuçlanacaksınız 133:

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

Bunun nedeni, gruptan ve diğer izinlerden yalnızca 1 (yürütme) kümesi ve 4 (okuma) bırakarak, sahibinin izinlerinden 6 (okuma (4) + yazma (2)) öğesini kaldırmış olmanızdır. Sonuç, yalnızca sahip için yürütme (1) izinlerine ve geri kalanı için yazma ve yürütme (4'ü unset, 1 ve 3 bırakarak) izinlerine sahip bir dosyadır.

Dosyanız muhtemelen yeni dosyalar için varsayılan izinlere sahip olduğundan 644, çalıştırdığınızda chmod -644 my_file, ayarlanan tüm izin bitlerini kaldırdınız ve herkes için izni olmayan bir dosya aldınız.

$ 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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.