Dosya izinleri nasıl ayarlanır, böylece yeni dosyalar aynı izinleri miras alır? [çift]


35

Bu sorunun zaten burada bir cevabı var:

Yeni alt klasörlerin ve dosyaların bir komut dosyası tarafından otomatik olarak oluşturulacağı bir klasörüm var.

Üst dizine yerleştirilen tüm yeni klasörler ve dosyalar için kullanıcı ve grup izinlerini yinelemeli olarak korumak istiyorum. Bunun yapışkan bir bit ayarlamayı gerektirdiğini biliyorum, ancak tam olarak ihtiyacım olanı gösteren bir komut bulamıyorum.

Şimdiye kadar yaptığım şey bu:

sudo mkdir -p /path/to/parent
sudo chmod -R 660 myself:somegroup /path/to/parent

Bundan sonra, 660 izinlerinin yerleştirilmiş herhangi bir klasör ve dosyaya tekrarlı olarak ayarlanmasını istiyorum /path/to/parent.

Ancak şimdiye kadar denediğim her şey başarısız oldu. Birisi lütfen yardımcı olabilir mi?

Aslında sekizli bayrak 660 muhtemelen doğru bile değildir. İstediğim izinler:

  1. /path/to/parentAltına yerleştirilen dizinler izinleri olan kullanıcılar tarafından hesaplanabilir
  2. dosyalar kendim ve bir üye grubunun üyeleri tarafından okunabilir / yazılabilir
  3. Dosya ve klasörler /path/to/parentdünya tarafından okunabilir DEĞİLDİR

Ubuntu 10.0.4 LTS'de çalışıyorum.

Birisi lütfen yardımcı olabilir mi?

Yanıtlar:


10

Grawity mükemmel bir cevap veriyor ama düzenlenen sorunun biraz değişmiş olabileceğinden şüpheleniyorum.

Apache kullanıcısına / grubuna ait olan dizini terk etmeyi öneririm. Bu muhtemelen dağıtımınıza bağlı olarak apache veya httpd olacaktır .

Örneğin

chown -R apache:apache /path/to/parent

Daha sonra https://serverfault.com/questions/164078/is-adding-users-to-the-group-www-data-safe-on-debian gibi bir şey yapabilirsiniz ya da sizi temin etmek için apache grubuna bile ekleyebilirsiniz. dizine grup erişimi var. (Gibi bir şey usermod -aG apache username)

Ben olmaz chmod -Rhtml komut dosyaları veya jpg en veya rastgele başka şeyler çalıştırılabilir istemiyoruz çünkü tüm dizinde. İzinleri gerektiği gibi değiştirmelisiniz. (660'a sıfırlamak, fikirlerin en kötüsü olmayabilir.)

Denemek isteyebileceğiniz bir şey:

chmod o+w file

'O', 'diğer' ve 'w', 'yaz' anlamına gelir. Ayrıca 'grup' için 'kullanıcı' ve 'g' için 'u' ve umarım kendi kendini açıklayıcı olan 'r' ve 'x' olabilir. '+' Yerine '-' kullanarak izinleri kaldırabilirsiniz.


Sanırım en basit çözüm, kendimi apache kullanıcı grubuna eklemektir. Bunu önerdiğin için teşekkürler. Bunu neden kendim düşünmediğimi bilmiyorum!
oompahloompah

1
o+wiyi bir seçim burada? Değişiklikler ile sınırlı olmamalı uve g? Aksi takdirde, dizinde ve alt dizinlerde güvenliği sağlamaya çalışmanın amacı nedir?
jww

61

Aradığınız izin bitleri 0770 ve 0660'dır.

  • rw-izinler → 110ikili → 6sekizli

Grup sahipliği kullanarak setgid bit ayarlayarak klasör / / yol / ebeveyn oluşturulan yeni dosya ve klasörler tarafından devralınacak edilebilir chmod g+sböyle:

chmod g+s /path/to/parent

Şimdi, / path / to / parent altında oluşturulan tüm yeni dosya ve klasörler, / path / to / parent öğesinde ayarlananla aynı gruba sahip olacaktır.


POSIX dosya izinleri vardır değil miras; oluşturma işlemi tarafından verilir ve mevcut umask değeri ile birleştirilir.

Ancak, bunu başarmak için POSIX ACL'lerini kullanabilirsiniz . Bir dizindeki varsayılan ACL'yi ayarlayın :

setfacl -d -m u::rwX,g::rwX,o::- /path/to/parent

Bu geçerli olacaktır setfacl, / / yol / ebeveyn dizinine -modifying -du şifrenin yeni oluşturulan öğelere uygulanacak olanlar - EDL. (Büyük harf Xyalnızca dizinlerin +xbit alacağı anlamına gelir .)

(Gerekirse, ACL'lere bir u:someuser:rwXveya g:someuser:rwX- tercihen bir grup - ekleyebilirsiniz .)


Not: ext3 / ext4 kullanan eski sistemlerde, dosya sistemini bu aclseçenekle birlikte bağlamanız gerekiyordu , aksi takdirde tüm ACL'leri yok sayar ve yenilerini ayarlamaya izin vermezdi.

mount -o remount,acl /

Bunu kalıcı olarak ayarlamak için kullanın tune2fs -o acl <device>veya düzenleyin /etc/fstab.


5
cevaplamak için zaman ayırdığınız için teşekkür ederiz. Ne yazık ki, tüm bunlar için oldukça yeniyim ve yazdıklarınız Yunanca'dan bana ayırt edilemez (herhangi bir Yunanlı SO'cu için üzgünüm!). Yazdıklarının çoğunu anlamadım. Bir web işlemim var ve Apache'ye yalnızca Apache'nin (sahibinin) ve benin (grubun) dosyaları açıp dizinlere dönüştürebildiği bir üst klasörde klasörler ve dosyalar oluşturma yeteneği vermek istiyorum. Diğer herkes yasaklandı. Tek yapmaya çalıştığım bu. Apache'nin alt klasörler oluşturabilmesi ve içindeki dosyaları saklayabilmesi gerekir.
oompahloompah

Bu işe yaramıyor unzipmu?
datasn.io

2

Bence bu konuyu biraz zorlaştırıyorsun. Üst seviye dizini başkaları tarafından erişilebilir değilse, o zaman diğerleri ağaç içinde dosya oluşturamaz. Yalnızca yazma işlemi apache yapıyorsa grup yazma erişimi gerekli değildir.

Bu adımlar istediğiniz şeyi yapmalıdır (komutlardaki dizini kullanmak istediğiniz diziyle değiştirin):

  • umask 027apache varsayılan komut dosyasına ekleyin /etc/default/apache. Bu, diğerlerinin dosyalara veya apache'nin oluşturduğu dizinlere erişmesini önler.
  • chown www-data:www-data directoryApache'nin yazabilmesini istediğiniz dizinde çalıştır .
  • chmod 750 directoryApache'nin yazabilmesini istediğiniz dizinde çalıştır .

Apache'nin bir dizine yazmasına izin vermek, sunduğunuz içeriğe her türlü kötü amaçlı yazılımı enjekte etme özelliğini açar. Bu dizin ağacının içeriğini uygun şekilde izleyin.

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.