Düzenledikten sonra bir dosyanın sahibi nasıl korunur?


11

Sorum, yeni oluşturulan dosyalar hakkında soru sorması dışında, diğerine benzer .

Benim Unix kutusunda, kullanıcılar alice , bob ve tomcat grubu içindedir tomcat .

Tomcat sunucusunun yapılandırma dosyaları tomcat kullanıcısına ve tomcat grubuna aittir.

Alice ve bob dosyaları düzenleyebilmesi için bu dosyanın izinlerini grup tarafından okunabilir ve yazılabilir olarak değiştirdim.

Ancak, düzenleme yaptıktan sonra dosyanın dosyayı düzenleyen son kullanıcıya ait olduğunu fark ettim.

S: Alice ve Bob'un sahipliklerini değiştirmeden dosyaları düzenleyebilmesi için izinleri değiştirmek mümkün müdür?

Bir dosyayı düzenlemek zaten sahipliğini nasıl değiştirir?


Amacınız tomcat'in dosyalara sahip olmaya devam etmesini sağlamak mı yoksa aşağıdakileri sağlamak mı : tomcat sunucusu çalışmaya devam ediyor; Alice ve bob dosyaları düzenlemeye devam edebilir ve bu güvenlik korunur mu?
ctrl-alt-delor

1
Tomcat hizmetinin, sorunuzu ifade etme şekline göre 'tomcat' kullanıcısı altında çalıştığını varsayabilirim. Tomcat'in bir istismarının, sunucunuzun amaçlayamayacağınız bitlerini açığa çıkarmak için kendi yapılandırmasının yeniden yazılmasına neden olabileceğinden, bu muhtemelen arzu edilmez. Tomcat grubu okuyabilir ancak yazamazken, yapılandırmayı yazabilecek farklı bir grup kullanmayı düşünmelisiniz.
Ed Neville

Yanıtlar:


17

Dosyanın sonuçta ortaya çıkan kullanıcı düzenleyicinin ne yaptığına bağlıdır. Bazı düzenleyiciler dosyayı keserek ve üzerine yazarak kaydeder (inode değiştirmeden). Ve bazı editörler (başka bir ad için dosyayı yeniden fileiçin file~olağandır) ve orijinal adı ile yeni bir dosya oluşturun. Orijinal dosyayı değiştirmek, sahibini aynı tutar, yeni bir dosya oluşturmak, yeni dosyanın oluşturma işleminin UID'sine ait olmasını sağlar.

Editörler ben Debian üzerinde var nanove joesıra, nvive vim(minimal versiyonu vim-tinyyerinde üzerine görünmektedir). Sanırım vimve Emacs muhtemelen yaptıkları şeyde yapılandırılabilir.


Stephen atom güncellemeleri hakkında yorum yapar . Yerinde yeniden oluşturma ile ilgili sorun, dosyanın sıfır uzunluğa kesilmiş ve daha sonra yazılmış olmasıdır. Tüm veriler yazılmadan önce başka bir işlem açılıp okunabilir.

Atomik güncelleme, yeni sürümü söyleyerek oluşturup file.newyeniden adlandırarak file.newyapılır file. Yedek dosya bırakarak, tek oluşturabilir file.new, bağlantı fileiçin file~ve sonra yeniden adlandırmak file.newiçin file. Yeniden adlandırma atomiktir, çünkü dosyaya adıyla erişen herhangi bir işlem, aradaki hiçbir şeyi değil, eski veya yeni sürümü alır. Tüm açık dosya tanıtıcıları elbette açık tutulan dosyayı göstererek dosyada tutarlı bir görünüm sağlar.


Gönderen dosyanın izinleri aynı dosyada (inode) üzerinden tasarruf, bakış işaret dosyasının kendisini (ancak dizin) yazma erişimi gerektirir yeniden adlandırma ve yenisini oluşturmak dizine yazma erişimi (ancak orijinal dosya gerektirir ).

(Yeniden adlandırma ve yeniden oluşturma, birisinin paylaşılan bir dizinde bir dosya oluşturması veya üzerinde değişiklik yapması, ancak buna grup yazma erişimi vermeyi unutması durumunda da tesadüfen dosya izinlerini düzeltmenin bir yoludur.)


6
Oluşturma ve yeniden adlandırma, dosyanın POSIX semantiği kullanılarak atomik olarak güncellenmesini sağlamanın tek yoludur.
Stephen Kitt

güzel bir açıklama.
Mian Asbat Ahmad

13

Şöyle açıklanabilir tarafından ilkkachu kullanılan editör tasarrufu yeni bir dosya oluşturursa, o zaman kontrol etmenin bir yolu yoktur sahibini dosyasının. Muhtemelen gerçekten önemsediğiniz şey, dosyaların Tomcat tarafından okunabilir olmasını sağlamaktır; bunu gruplarının tomcat(ve gruplarının okuyabileceğini) sağlayarak yapabilir setgidve üst dizindeki biti ayarlayarak yeni dosyalarda uygulanabilir :

chmod g+s .

Bu nedenle, bobdosyayı yeniden oluşturan bir düzenleyici kullanarak bir dosyayı düzenlerse, düzenlenen dosyanın sahibi olur bob:tomcatve Tomcat yine de okuyabilir ( umasken azından tipik olarak). Üst dizin tomcatgrup tarafından yazılabilir olduğu sürece , o gruptaki herhangi bir kullanıcı dizindeki dosyaları düzenleyebilir (yalnızca yeniden oluşturarak).

Ancak süreçlerinizi değiştirmeyi öneriyorum; muhtemelen dosyaları doğrudan Tomcat tarafından okundukları yerde düzenlememelisiniz. İdeal olarak, dosyalar bir çeşit VCS'de muhafaza edilecek ve ayrı bir işlemle (muhtemelen otomatik olarak) dağıtılacaktır. Bu şekilde tüm bu sahiplik sorunlarından kaçınırsınız ...


güzel çözüm !!
Mian Asbat Ahmad
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.