Samba paylaşım izni kullanıcı yazma dosyasını reddetti ama yine de gösteriyor


12

Çok garip bir konu ...

Uzaktan Samba paylaşımı:

[javaerpm]
    path = /u/abas/erpm/java
    force user = erpm
    guest ok = yes
    read only = no
    writeable = yes

Kök kullanarak yerelde mount komutu:

root@crunchbang:/mnt/abas# mount -t cifs -o username=guest,rw,exec,auto //10.0.0.2/javaerpm ./javaerpm

Kök hiç okuma / yazma / cd sorun yok:

root@crunchbang:/mnt/abas# cd javaerpm
root@crunchbang:/mnt/abas/javaerpm# touch test
root@crunchbang:/mnt/abas/javaerpm# ll
total 1
-rw-r--r--  1  501 users   0 Sep 24 09:55 test
root@crunchbang:/mnt/abas/javaerpm# rm test

Ama düzenli bir kullanıcıya geçip aynı şeyi yaparsam bunu alıyorum:

shawn@crunchbang:/mnt/abas/javaerpm$ touch test
touch: cannot touch `test': Permission denied

Ben llve ben zaten dosyayı yazdığını görebilirsiniz:

shawn@crunchbang:/mnt/abas/javaerpm$ ll
total 1
-rw-r--r--  1  501 users   0 Sep 24 09:55 test

rmHiç sorun bile yok:

shawn@crunchbang:/mnt/abas/javaerpm$ rm test
shawn@crunchbang:/mnt/abas/javaerpm$

Farklı montaj seçenekleri denedim. uid=501hiçbir şeyi değiştirmez. Denedim nounixama sonra hiç çalışmıyor ve kök veya shawn kullanıcı kullanarak hiçbir şey görmüyorum.


Bu Q neredeyse aynı sorun gibi görünüyor: unix.stackexchange.com/questions/71896/… .
slm

Tam olarak aynı sorun değil.
shrimpwagon

Neredeyse 8-) dedim. Bu yorum bana gelecekteki ziyaretçiler için ortak dişli Q'ları ve A'ları birbirine bağlamaya yönelikti, ancak bunu kontrol edebileceğinizi düşündüm.
slm

Yanıtlar:


7

Not: Sadece burada tahmin ediyorum, bir samba gurusu değilim.

Samba / CIFS, en azından burada kullanma şekliniz, sunucu ve istemci arasında kimlik bilgilerini oluşturmaz. force userSunucudaki yönerge nedeniyle , tüm işlemler erpmsunucudaki kullanıcı olarak gerçekleştirilir . Ancak, hem istemci hem de sunucu bir unix sistemi çalıştırdığından, CIFS POSIX uzantılarını otomatik olarak reddettiler . Bu, unix izinlerinin bir noktaya kadar çalışmasını sağlar, ancak yalnızca sunucunun izin verdiği ölçüde ve unix izinlerinin iddia ettiği ve sunucunun neye izin verdiği bir durumla karşılaşırsınız.

Tüm dosyaların kullanıcı kimliği 501 olarak göründüğünü fark edeceksiniz. Bu onların sunucudaki kullanıcı kimliği.

Bir dosya oluşturmaya veya kaldırmaya çalıştığınızda, dizinde yazma izni gerekir. Tüm erişim sunucudaki tek bir kullanıcıyla eşleştirilir, bu nedenle yazma izni erpmsunucudaki o dizine yazılmasına izin verilip verilmeyeceği ile sınırlıdır . Cevap Evet.

Çalıştırdığınızda touch, dosyayı oluşturur ve sonra değişiklik zamanını değiştirir. Bir dosyanın değiştirme zamanını değiştirmek sahiplik gerektirir ve bu istemci tarafında genel dosya sistemi kodu tarafından test edilir.

Çalıştırırsanız strace touch test, opençağrının (dosyayı oluşturan) başarılı olduğunu fark edersiniz , utimesçağrı (veya daha doğrusu Linux'ta utimensatsistem çağrısı) saatleri ayarlayamaz.

Bu aslında biraz garip çünkü başarılı utimes olmalı , çünkü touchbunu bir NULL argümanı ile çağırıyor (“zaman damgasını geçerli saate ayarlayın” anlamına gelir) ve bu dosyaya yazabilecek herhangi bir arayan için izin verilmelidir. sahibine keyfi bir zaman damgası ayarlamak gibi. utimensatAslında izin tabanlı bir denetim yapıyor ve dosya sistemi gerçek izinleri ne olursa olsun bir yazma işlemine izin verecek olsa bile izinleri bu dosyaya yazamam diyor diyor belirleme şüpheli .

Sunucu tarafı root olmayan bir kullanıcının izinleriyle çalışırken CIFS POSIX uzantılarının en büyük avantajı yürütülebilir biti ve muhtemelen grup sahipliğini taşımaktır. forceuidBağlama seçeneğiyle kullanıcı sahipliğini tek bir istemci tarafı kullanıcıya eşlerseniz daha az kafa karıştırıcı olabilir .


3
Kapsamlı yanıt için çok teşekkür ederim. Sonunda denedim username=guest,defaults,nopermve bu tamamen sorunu çözdü. Bu konuda hangi cevabı kabul edeceğimi bilmiyorum, çünkü username=guest,defaults,nopermmuhtemelen en iyi cevap değildir ve cevabınızı denemek için daha fazla zamanım yok. Tekrar teşekkürler!
karideswagon

@shrimpwagon Güncellemeniz için teşekkür ederiz. Bu benim sorunumu çözdü ... Montaj sırasında noperm ve varsayılan noperm boru uzun zamandır unuttum.
Matthew
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.