Kullanıcıların kendilerine ait olmayan bir dosyayı değiştirmesine izin verebilir miyim?


17

Kullanıcıların root'a veya kendilerine ait olmayan bir kullanıcıya ait bir dosyayı chmod etmelerine izin vermek istiyorum. Dosya 777 chmod'ed ve "işlem izin verilmiyor" olsun. Kullanıcıyı dosya grubuna ekledim ve aynı şeyi aldım. Kullanıcı neden yazma erişimine sahip olduğu bir dosyayı değiştiremez?


1
Bu mantıkla, neden her şeyi sadece kök olarak çalıştırmıyorsunuz? Herhangi bir kullanıcı herhangi bir modu değiştirebilirse, temel olarak tüm Unix izin modelini yok edersiniz ...
Chris Down

1
Ne yapmak istiyorsun? belki bir göz atmalısınızsudo : linux.die.net/man/8/sudo & linux.die.net/man/5/sudoers
xx4h

Dosya 777 izinlerine sahiptir, bir kullanıcı "mv dosyası file.old; cat file.old> dosya" 'ya gidebilir ve artık dosyaya sahip olur ve dosyayı değiştirebilir. Neden "chmod 777 dosyası" olamaz?
ashleysmithgpu

5
Hayır, bunu yalnızca dizine yazma izni varsa yapabilirler. Kullanıcı, sahip olmadığı bir dosyanın izinlerini değiştirme hakkına sahipse, 04777 modunu ayarlayarak ve / usr / bin / env dosyasını bu dosyaya kopyalayarak bu kullanıcı olarak herhangi bir komutu çalıştırabilir.
Stéphane Chazelas

@StephaneChazelas Bu garip bir argüman çünkü çekirdek her türlü değişikliğe izin verme kararına bağlı kalmaksızın sahip olmayanlara bu tür değişikliklere izin vermeye kolayca karar verebilir (ve yapar!) . Sonuçta sahibi olmayan bir dosyayı yazdığında SUID bile sıfırlanır.
Hauke ​​Laging

Yanıtlar:


8

Kullanıcı neden yazma erişimine sahip olduğu bir dosyayı değiştiremez?

Normal erişim hakları için bu bir tasarım kararıdır. Richard'a ihtiyacın var : WRITE_ACLve belki de WRITE_OWNER.


1
Ve rikkatlerin genellikle mevcut olmadığı konusunda uyarmalısınız.
sendmoreinfo

@sendmoreinfo Wikipedia makalesi bunu söylüyor ve cevabımın rikkatlerin ne olduğunu ve nasıl kullanıldığını açıklamadığı için okunması gerektiği açık. Bu nedenle doğru bir cevabı "yararlı değil" olarak değerlendirmek saçmadır. Özellikle eşdeğer bir alternatif olmadığı için. Bir dahaki sefere bu bilgilerin gerekli olduğunu düşünüyorsanız bir düzenleme yapın.
Hauke ​​Laging

Anladım, bu bir tasarım kararı, teşekkür ederim
ashleysmithgpu

2
Özelliği açıkça kullandınız, bu yüzden kendiniz açıklayın, kendi sözlerinizle.
sendmoreinfo

10

Unix izinleri basit olacak şekilde tasarlanmıştır. Bir dosyadan okumak için okuma iznine, bir dosyaya yazmak için yazma iznine ve bir dosyayı yürütmek için yürütme iznine ihtiyacınız vardır. Meta verilerini değiştirmek için bir dosyaya sahip olmanız gerekir¹.

Bir dosyayı okuyabilen bir kullanıcının başkalarına okuma izni vermesine izin vermek veya dosya yazabilen bir kullanıcının başkalarına yazma izni vermesine izin vermek güvenlik modelini fazla değiştirmez. Bunun nedeni, unix izinlerinin isteğe bağlı olmasıdır: bir dosyayı okuyabilen bir kullanıcı, diğer kullanıcılar dosyayı başka türlü okuyamasa bile (ve benzer şekilde yazma için kullanıcı proxy olarak davranabilir ve başkaları adına yaz).

Öte yandan, bir kullanıcının sahip olmadığı izin vermesine izin vermek, izin sistemini tamamen kıracaktır: kullanıcı kendisine tüm izinleri verebilir.

Sahip olmadığınız bir dosyanın izinlerini değiştirmeniz oldukça nadirdir. Genellikle dosyanın oluşturulduğu anda doğru izinlere sahip olmasını sağlamanız gerekir. Buna gerçekten ihtiyacınız varsa, kullanıcıya sudo chmodbelirli bir mod ve belirli bir dosya (örn. joe: ALL = (ALL) chmod g+r /path/to/file) İçin haklar verebilirsiniz .

¹ okuma veya dosya da onları setleri yazılı nedeniyle özellikle şunlardır erişim ve modifikasyon süreleri, hariç.


Kullanım durumumda, bir dosyada izinleri ayarlamak isteyen bir web işlemi (www-data ile) ve bir cli işlemi (kendim) var. Kendimi www-data grubuna ekledim, ama bu yeterli değil.
donquixote

Sahibini / grubunu kendime bile değiştirmek: www-data yardımcı olmuyor. (İzinleri ayarlamaya çalışan bir mekanizma tasarlamadım, üzerinde hiçbir kontrole sahip
değilim
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.