Böyle 111 veya 333 olarak Linux izinleri amacı nedir (yani kullanıcı yürütebileceği , ama okuyamaz dosyası), otomatik okuma yeteneği anlamına gelmez yürütmek yeteneği olur?
Böyle 111 veya 333 olarak Linux izinleri amacı nedir (yani kullanıcı yürütebileceği , ama okuyamaz dosyası), otomatik okuma yeteneği anlamına gelmez yürütmek yeteneği olur?
Yanıtlar:
Onunla oynadım ve görünüşe göre, yürütme izinleri okuma izinleri anlamına gelmiyor. İkili dosyalar okunabilir olmadan yürütülebilir:
$ echo 'int main(){ puts("hello world"); }' > hw.c
$ make hw
$ ./hw
hello world
$ chmod 111 hw
$ ./hw
hello world
$ cat hw
/bin/cat: hw: Permission denied
Üzerinde hem okuma hem de yürütme izni bitleri olmadığı sürece, komut dosyaları çalıştıramıyorum:
$ cat > hw.sh
#!/bin/bash
echo hello world from bash
^D
$ chmod +x ./hw.sh
$ ./hw.sh
hello world from bash
$ chmod 111 ./hw.sh
$ ./hw.sh
/bin/bash: ./hw.sh: Permission denied
/bin/bash hw.sh
ve sonra bash hw.sh
okumaya açılmaya çalışır (ve başarısız olur).
dizinler için mantıklıdır, örneğin, belirli bir dizinde yürütülebilir dosyaları (gizli) tutarsanız ve daha sonra kullanıcıların dizin içeriğini görmeden bu dosyaları çağırmasına izin verirseniz (ancak onları bilgilendirdikten sonra belirli bir dosyanın orada olduğunu bilmeleri!). 111 ile karşılaştırıldığında 333, dizinin içeriğini görmeden bu dizinlere / dizinlerinden dosya yazmanıza / silmenize izin verir.
Açıkçası tüm kombinasyonlar Aslında gerek yok ... bu faydalıdır, ancak özellikle belirtilen adresle almamaya read
sadece - bir dosya yürütme izni execute
söz konusu dosya bir komut dosyası (örneğin bir kabuk yazılımıdır sürece - izni ( .sh
), perl-script ( .pl
) vb.). Normal ikili dosyalar sadece execute
izinle yürütülebilir . * BSD sistemlerinde, birkaç yürütülebilir dosya execute
izinsiz izin verir read
, özellikle "güvenlik açısından önemli" komutlarda - ör su
.
Öyleyse neden kullanıcılara read
-permisyon (ve sadece execute
-permisson) vermiyorsunuz? Bir kullanıcı tarafından okunamayan bir dosya olduğundan, o kullanıcı tarafından da kopyalanamaz ! İznin kaldırılması, read
kullanıcıların daha sonra kötüye kullanabilecekleri (örn SUID=root on
. Alma) kendi "kişisel" yürütülebilir dosya kopyalarını oluşturmalarını engeller .
Ve write
-permission'a sahip olmamak, bir dosyanın acilen silinmesini önler.
Unutmayın, sahibine ne read
-nor-izin write
vermezse biraz nadirdir, ancak bazen bile owner
sadece bir dosyayı silmeyi önlemek iyi bir fikir olabilir . Tabii ki owner
- bahsetmemek root
- bu tür önlemleri, başka yollarla değilse de, her zaman sadece chmod
dosyadaki izinle atlayabilir.
owner
sadece bir dosyayı silmeyi ." - bir dosyayı silmek için herhangi bir izne (okuma, yazma veya yürütme) gerek duymamanız.
/proc/${PID}/maps
ve daha sonra belleğin ilgili bölümlerini okuyarak belleğe dökülmeye yatkın olmaz /proc/${PID}/mem
mı? Veya yürütülebilir dosyadaki izinlerin kısıtlanması, yürütme sırasında bellekteki ilgili bölümlerindeki okuma izinlerini de kısıtlıyor mu? (İkincisi olası görünmüyor, IMO.)