it-swarm-tr.com

Bir alt dizine erişirken ana dizinin izinleri önemli mi?

Kısıtlayıcı izinli bir kök klasörüm varsa, diyelim ki 600 ve alt klasörlerin/dosyaların 777 izni varsa, kök klasörde 600 olmasına rağmen herkes alt dosyayı okuyabilir/yazabilir/yürütebilir mi?

168
Ken Li

Kesin kural şudur: Bir dizini ancak üzerinde yürütme izniniz varsa gezinebilirsiniz.

Örneğin, dir/subdir/file sitesine erişmek için dir ve dir/subdir üzerinde yürütme iznine ve ayrıca istediğiniz erişim türü için file üzerinde izinlere ihtiyacınız var. Köşe vakalarına girerken, göreli bir yolla (Linux'ta yaptığınız) bir dosyaya erişmek için geçerli dizinde yürütme iznine ihtiyacınızın evrensel olup olmadığından emin değilim.

Bir dosyaya erişme şekliniz önemlidir. Örneğin, /foo/bar üzerinde ancak /foo üzerinde yürütme izinleriniz varsa, ancak geçerli dizininiz /foo/bar ise, /foo/bar içindeki dosyalara göreli bir yoldan erişebilirsiniz, ancak mutlak bir yol boyunca. Bu senaryoda /foo/bar olarak değiştiremezsiniz; daha ayrıcalıklı bir işlem muhtemelen ayrıcalıklı olmadan önce cd /foo/bar yapmıştır. Bir dosyada birden fazla sabit bağlantı varsa, ona erişmek için kullandığınız yol erişim kısıtlamalarınızı belirler.

Sembolik bağlantılar hiçbir şeyi değiştirmez. Çekirdek, arama işleminin erişim haklarını kullanarak onları dolaşır. Örneğin, symdir dizinine sembolik bir bağlantıysa, dir dizinine sym/foo erişimine izin vermeniz gerekir. Symlink'in üzerindeki izinler, işletim sistemine ve dosya sistemine bağlı olarak önemli olabilir veya olmayabilir (bazıları onlara saygı gösterir, bazıları onları görmezden gelir).

Yürütme izninin kök dizinden kaldırılması, kullanıcıyı etkin olarak dizin ağacının bir bölümüne kısıtlar (daha ayrıcalıklı bir işlemin değişmesi gerekir). Bu, erişim kontrol listelerinin herhangi bir şekilde kullanılmasını gerektirir. Örneğin, / ve /homejoe (setfacl -m user:joe:0 / /home) ve /home/joe, joe 'nin ana dizinine kapalı ise, joe geri kalanına erişemez (/bin/sh ile Shell betiklerinin çalıştırılması veya /lib'e erişmesi gereken dinamik olarak bağlantılı ikili dosyalar çalıştırılması dahil, bu nedenle pratik kullanım için daha derine inmeniz gerekir, örn. setfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib).

Bir dizindeki okuma izni, girişleri numaralandırma hakkını verir. Okuma izni vermeden yürütme izni vermek bazen yararlıdır: girişlerin adları bunlara erişmek için parola görevi görür. Yürütme izni olmadan bir dizine okuma veya yazma izni vermede herhangi bir kullanım düşünemiyorum.

Hayır. Kök klasör izni alt dosya iznini sınırlar. Deneyebilirsin.

$ mkdir rootdir
$ touch ./rootdir/childfile
$ chmod 777 ./rootdir/childfile
$ chmod 600 rootdir
$ cat ./rootdir/childfile

Bunu anladım:

$ cat: ./rootfolder/childfile: permission denied
34
goovim

Üst dizin olmasa bile, alt dizini yazılabilir yapabilirsiniz. Bunu gruplar için yapıyorum.

Örneğin: üst dizinin sahibi grup kodlayıcı

drwxr-sr-x

alt dizin

drwxrwsr-x

Siz (kodlayıcı grubunun herhangi bir üyesi) yine de alt dizine yazabilirsiniz, ancak üst dizine yazamazsınız.

4
Kemin Zhou

Üst dizinde yürütme ayrıcalığınız olmasa bile dosyaya erişmek için sabit bağlantı oluşturabilirsiniz. Ancak buradaki yakalama, üst dizindeki yürütme ayrıcalığınızı kaybetmeden önce sabit bağlantıyı oluşturmanız gerekir

$ ln foo/bar/test_privs privs_test_checking
1
Kamal