chmod 1,2 ve 4, tam olarak ne yaparlar?


0

Sadece okumayı, yazmayı ya da sadece izin almayı ve bunun ne anlama geldiğini merak ediyordum.

Yalnızca yazma iznim varsa, bu, dosyanın içeriğini ekleyebileceğim veya değiştirebileceğim, ancak geçerli içeriği okuyamadığım anlamına mı geliyor?

Daha da fazla kafa karıştırıcı: Yalnızca okumam durumunda neden dosyayı kopyalayamıyorum ve uygulayamıyorum? Okuma izninin otomatik olarak yürütme izni vermemesinin bir nedeni var mı? Dosyayı başka bir yere yapıştırabilir ve orada yürütebilirse, birisinin yürütme izni vermemesinin faydası nedir?

Ve eğer sadece izinlerini yerine getirmişlerse, bunun anlamı ne? Bir dosyayı çalıştırmak onu görmenizi gerektirmiyor mu?

Ve son sorum: Yürütme izni verilmiş olması nerelerde fark yaratır? Bir .txt dosyası çalıştırmak mantıklı değil. Windows'da örneğin .exes, .bats ve benzeri vardır. Unix sistemlerinde sadece .sh yi biliyorum. Yürütülebilir dosyaları tanımlayan belirli sayıda uzantı var mı? Şimdi ise, nasıl bir tane bulabilirim?

Yanıtlar:


0

UNIX'te chmod 1 = çalıştır, okuma 4 ve yazma 2.

Her şey chmod'ed 1 olabilir ve mevcut kabuk onu çalıştırmayı deneyecek, ismini komut olarak yazabilirsiniz. İlk çift karakter "#!" İse, dosyanın başında "sihirli" bir dosya vardır. (Shebang) daha sonra satırın bir sonraki kısmı çalıştırılacak gerçek çalıştırılabilir yolu ve kabuğa geçmek için herhangi bir seçeneği listeler. Metin betiği dosyayı okumak ve etkin bir şekilde çalıştırmak için bu çalıştırılabilir ikili dosyaya aktarılır.

Siz istediniz, yürütme okumayı gerektirmiyor, evet, ama bu dosyayı göstermek için ikili programın, örneğin korn kabuğunun takdirine bağlı olacak. Genelde DRM'ye benzer, dosyalara karşı izinlerinizi kontrol etmek için programlara saygı duyulur. Kabuk komut dosyalarına rutin ayarlar yaptım ve onları işaretledim - yalnızca çalıştırılabilir ve çalıştırılabilir ve temelde okunamadı (Sanırım bazı eski UNIX sürümlerinin / tmp üzerindeki özel dizin yapışkan izinleri gibi, bununla ilgili sorunu olduğunu düşünüyorum, ancak bu başka bir şey değil) konu).

Bir komut dosyası yalnızca 4 veya "okundu" olarak işaretlenmişse, dosyayı terminalinize aktarmanız için izin verir. Evet, hatları bir kabuk yorumlayıcısına nasıl geçirdiğinize bağlı olarak çalıştırabilirsiniz, birçok kabuğun belirli bir dosyadan satırları okumasını ve bir komut dosyasıymış gibi çalıştırmasını söyleyen bir komut satırı seçeneği vardır.

Ve senin için son dava, chmod 2 yazma izni. Yalnızca bunu verirseniz, dosyanın içeriğini yalnızca ekleyebilir veya yok edebilirsiniz. Dosyanın izinlerine, dosyanın var olup olmadığını kontrol eden dizine (bir dosya olarak düşünmeyi severim) dayanarak dosyayı yok edemez / bağlantıyı kaldıramaz / kaldıramazsınız.

Chmod 2'nin bir dosya üzerinde çok kullanışlı olmadığını iddia etmek zorunda kalacağım, ancak bir dizinde başkalarının size dosya göndermesi için, genellikle bir sınıftaki öğrenciler için güvenli bir "açılan kutu" yapabilirsiniz. diğer öğrencilerin dosya adlarının üzerine yazmayın.

"Man chmod" kılavuz sayfalarında biraz yardım olmalı ve umarım kendi UNIX benzeri bir sisteme sahip olursunuz. Yürütme gibi çok garip vakaların birçoğu, çeşitli izinlerin sonucunu size gösterebilmeleri için yalnızca başka bir kullanıcı kimliği veya arkadaş gerektirir.


0

Ne demek

Güvenlik izni sekizli değerleri, ilişkili izinlerin açıkça bir nesneye ayarlanmasına izin verir. Bir nesneye koyduğunuz bu izinlerle açıkça karşılaşabilirsiniz chmod. Bununla ilgili daha fazla ayrıntı için aşağıdaki referans tablosuna bakınız.


Neyim var

Örneğin , içeriğini okuyabilmek veya mantığı görmeden birisinin bir miktar mantığı ve Shebang'ı çalıştırmak için bir dosyayı yürütmesine izin vermek istiyorsanız , bu esneklik oradadır.


Kendi ihtiyacınıza göre ayarlayın

Güvenlik izinlerini kendi gereksinimlerinize göre belirlersiniz, böylece bazı güvenlik konfigürasyonları sizin için bir anlam ifade etmiyorsa, o zaman böyle kullanmanız gerekmez.


Sayısal İzinler

Chmod sayısal formatı dört sekizlik basamağa kadar kabul eder. En sağdaki üç hane sırasıyla dosya sahibinin, grubun ve diğer kullanıcıların izinlerini gösterir. 4 basamak verilmiştir opsiyonel lider haneli, özel belirtir setuid, setgidve stickybayrakları.

En sağdaki üç basamağın her bir basamağı, bitlerin sırasıyla okuma, yazma ve yürütme işlemlerini kontrol ettiği, 1araçların izin verdiği ve 0araçların izin vermediği bir ikili değeri temsil eder . Bu, sekizli gösterime benzer, ancak ondalık sayılarla temsil edilir.

# Permission              rwx Binary
7 read, write and execute rwx 111
6 read and write          rw- 110
5 read and execute        r-x 101
4 read only               r-- 100
3 write and execute       -wx 011
2 write only              -w- 010
1 execute only            --x 001
0 none                    --- 000

Örneğin, 754izin verir:

  • tüm bitlerin açık olduğu , yani OWNERikili değeri olduğu için okuma, yazma ve çalıştırma .7111

  • ' GROUPnin ikili değeri 5olduğu gibi 101, okuma ve yürütme, okuma ve yürütme açık ancak yazma kapalıdır.

  • sadece için EVERYONE ELSE, ikili değer 4olduğu gibi 100, sadece okunmanın açık olduğu anlamına gelir.


0

Diğerleri tarafından belirtildiği gibi, dosya izinleri bir bit maskesidir. Sistem garip ya da işe yaramaz kombinasyonların kullanımını engelleme yolundan çıkmaz: işe yaramaz, zararlı anlamına gelmez.

Yalnızca yazma iznim varsa, bu, dosyanın içeriğini ekleyebileceğim veya değiştirebileceğim, ancak geçerli içeriği okuyamadığım anlamına mı geliyor?

Evet.

Yalnızca okumuyorsam, neden dosyayı kopyalayıp sonra uygulayamıyorum?

İstisnalarla yapabilirsiniz. "Ayrıcalıklı" bir dosyayı (setuid / setgid bit veya Linux dosya yeteneklerine sahip) kopyalamak bu özellikleri kopyalamaz. Ayrıca, kopyalanacak bir yere de ihtiyacınız vardır ve / home bölümünün dosya yürütme işlemine izin vermediği bir sisteme sahip olabilirsiniz.

Aynısı, ilgili yorumlayıcıyı manuel olarak çağırarak kopyalanmadan da yapılabilir. Örneğin, kabuk komut dosyalarını çalıştırılabilir sh /path/to/scriptolmasalar bile çalıştırabilirsiniz. Linux'taki ikili dosyaların da bir tercümanı var /lib/ld-linux.so.

Ve eğer sadece izinlerini yerine getirmişlerse, bunun anlamı ne? Bir dosyayı çalıştırmak onu görmenizi gerektirmiyor mu?

Bunu yapar - ancak bu setuid biti işlendikten sonra kontrol edilir . Bir setuid programı yürütüyorsanız, sahibinin ayrıcalıklarına sahip olacak, bu nedenle sadece sahibinin + r'ye ihtiyacı var.

Dizinler için, + x farklı bir anlama sahiptir (klasörü dolaşmanıza, yani içindeki öğelere erişmenize izin verir). İçinde bir dosyanın tam adını biliyorsanız, dizinde + + değil + x ile erişebilirsiniz.

Yürütme izni verilmiş olması nerelerde fark yaratır? Bir .txt dosyası çalıştırmak mantıklı değil. Windows'da örneğin .exes, .bats ve benzeri vardır. Unix sistemlerinde sadece .sh yi biliyorum. Yürütülebilir dosyaları tanımlayan belirli sayıda uzantı var mı?

Yürütülebilirlik, dosya adıyla değil, içeriğiyle tanımlanır. (Ne de olsa , içeriği değil adını uyguluyorsunuz .)

Çekirdek bir dosya olarak nasıl yükleneceğini bildiğinde bir dosya çalıştırılabilir. Linux çekirdeği ELF ikili dosyalarını ve başlıklı "script" dosyalarını #!ilk satır olarak anlar . (Diğer Unix benzeri işletim sistemlerinde aynıdır.) Bu nedenle, yalnızca bu iki tür dosyada + x kullanmak mantıklıdır.

Örneğin, bir komut dosyası dosyası ile başlarsa #!/bin/sh, o zaman yürütme el ile çalışan ile aynı yapar /bin/sh myscript.sh. Aynısı Python veya Perl veya Ruby veya TCL veya C # veya Node / JavaScript veya başka herhangi bir dile uygulanabilir. (Yine, dosya adının sonekinin alaka düzeyi olmadığını unutmayın - yalnızca sihirli başlık yapar.)

Bunun avantajı, sisteminizin çeşitli dillerde yazılmış komutlara sahip olabilmesi ve her komutun hangi tercümanı kullandığına dikkat etmeden bunları kullanabilmenizdir.

Windows benzer bir durumda. Aynı zamanda 'çalıştırılabilir' izin bitine sahiptir ve grafik arayüzü dosya adlarında .exe sonekini isterken, asıl çekirdek sadece dosyanın içeriğini önemser. (Windows, MZ / PE ikili çalıştırılabilir dosyalarını kullanır ve komut dosyaları için #! Öğesini desteklemez.)

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.