777 izni olmadan Windows'dan yazılabilen bir Samba paylaşımı nasıl oluşturulur?


33

Bir Linux makinesinde (Debian 8) Samba 4 ile Windows bilgisayarlara (bir alanda Win7 ve 8) paylaşmak istediğim bir yolum var. Benim smb.confiçinde aşağıdakileri yaptım:

[myshare]
path = /path/to/share
writeable = yes
browseable = yes
guest ok = yes
public = yes

Windows'dan mükemmel okuma erişimim var. Ancak yazma erişimine sahip chmod -R 777 /path/to/shareolmak için, Windows'tan yazabilmek için yapmam gerekiyor .

İstediğim şey, Linux sahibinin Linux kimlik bilgilerini verdikten sonra Windows'dan yazma erişimi /path/to/share.

Ben çoktan denedim:

[myshare]
path = /path/to/share
writeable = yes
browseable = yes

Sonra Windows kimlik bilgilerini ister, ancak ne girersem gireyim, her zaman reddedilir.

777 vermeden Windows etki alanı bilgisayarından Samba paylaşımlarına yazma erişimi kazanmanın doğru yolu nedir?

Yanıtlar:


49

Bu paylaşım için özel bir kullanıcı oluşturmanızı ve bunları belirtmenizi tavsiye ederim force user(belgelere bakın) .

Bir kullanıcı oluşturun ( shareuserörneğin) ve paylaşım klasöründeki her şeyin sahibini o kullanıcıya ayarlayın:

adduser --system shareuser
chown -R shareuser /path/to/share

Ardından force usermaske ayarlarını ekleyin ve izin verin smb.conf:

[myshare]
path = /path/to/share
writeable = yes
browseable = yes
public = yes
create mask = 0644
directory mask = 0755
force user = shareuser

Bunun guest okbir eş anlamlı olduğunu unutmayın public.


1
Benzer bir sorun yaşadım ve tüm google aramaları sadece 777 kullanmanın kirli yolunu gösterdi. Paylaşımlı klasörüm için 775'i istedim ve linux "defaultUser" kullanarak dosyaları oluşturmak istedim, ayrıca public = yes kullandım. Klasör 775, oluşturma ve dir maskesi 775 idi, ancak Windows'ta yazılabilir değildi ve nedenini bulamadım. Eklemek force user = defaultUserbenim için iş yaptı.
firepol

Bunun çalışmasını sağlayamıyorum, herhangi bir zamanda dizini paylaşmaya çalıştığımda, dizini paylaşmak için "başkalarına" yazma izni vermem gerektiğini söyleyen bir pencere alıyorum.
Mark Kramer,

Anladım, sorun yerdi smb.conf. Google ve hatta sambas belgeleri dosyanın olması gerektiğini söyledi /usr/local/samba/libama aslında içeride/etc/samba
Mark Kramer,

1
@MarkKramer Linux dağıtımınıza dahil edilen belgeleri takip etmek iyi bir fikir çünkü çoğu dağıtım dosyaları Linux Vakfı'nın FHS'sine (Dosya Sistemi Hiyerarşisi Standardı) uygun şekilde yeniden organize ediyor. Dağıtımınızla birlikte verilen dokümanları okumanızı ve aramanızı öneririm, çünkü google her zaman en iyi cevap değildir, örneğin, yazılımın farklı bir sürümü hakkında bilgi alabilirsiniz. Saygılarımla.
RobertL

2

İçindeki paylaşım ayarlarında smb.conf , bir write list = ...satır kullanarak paylaşıma yazmalarına izin verilen kullanıcıların ve / veya grupların adlarını belirtmeniz gerekir .

Örnek:

[myshare]
...
write list = my_linux_username

O zaman Samba'nın smbpasswdkimliğini doğrulamak my_linux_usernameiçin bir şifre ayarlamak için bu komutu kullanmanız gerekir :

sudo smbpasswd -a my_linux_username

Bu adım gereklidir, çünkü standart sistem şifreleri /etc/shadow, SMB protokolünde kullanılan şifre karma algoritmaları ile uyumlu olmayan algoritmalarda saklanır. Bir istemci bir SMB kimlik doğrulama paketi gönderdiğinde, bir karma şifre içerir. Yalnızca aynı algoritmayı kullanan başka bir şifre karma ile karşılaştırılabilir.

(Önceki binyılın çok eski talimatları, Samba'da şifre şifrelemenin devre dışı bırakılmasını ve Windows'un ağa şifrelenmemiş şifreler çıkarmasına izin vermek için bazı kayıt defteri kesmelerinin kullanılmasını önerebilir. Bu tavsiye eski : Windows ve ağ trafiğinizi izleyebilen herkesin şifrenizi önemsiz bir şekilde ele geçirmesine izin verin.)


Müşteri tarafında yapman gereken bir şey daha var. Windows istemci sisteminiz bir Active Directory etki alanına katıldığında ve bir AD hesabıyla oturum açtığınızda, otomatik olarak kullanıcının tüm AD etki alanı adına sahip olan tüm nitelenmemiş kullanıcı adlarını ön ekler, yani AD_DOMAIN\your_usernameyalnızcayour_username .

Yerel bir hesapla giriş yaptıysanız (veya istemci sisteminiz bir AD etki alanına katılmamışsa), başka bir etki alanı adı belirtmediğiniz sürece , Windows, kullanıcı adını otomatik olarak istemci ana bilgisayar adıyla ekleyebilir .

Bağımsız bir Windows istemcisinden bağımsız bir Samba sunucusunda başarılı bir şekilde oturum açmak için kullanıcı adınızı olarak belirtmeniz gerekebilir SAMBA_SERVER_HOSTNAME\your_username.

Aksi halde Samba, kullanıcı adını görecek, WINDOWS_CLIENT_HOSTNAME\your_usernameadındaki etki alanına ait herhangi bir kullanıcıyı doğrulamanın bir yolunun bulunmadığı sonucuna varmış WINDOWS_CLIENT_HOSTNAMEve girişi reddetecektir.

(Samba yeni versiyonları olabilir var bir bu özel durum için onay dahili ve Samba eski sürümleri ile uğraşmak gerekiyorsa onlar yine de erişmesine izin verebilir. Ancak bu SMB kimlik doğrulama "kaputun altındaki" nasıl çalıştığını temelde ve , hala yararlı olabilir.)


1

Bunu arıyordum çünkü acelem vardı ve kullanıcılar oluşturmaya odaklanmaya bile vaktim olmadı ...

Sadece bir debian 9 makinesinin verilerini mümkün olan en kısa sürede çıkarmak zorunda kaldım ve bu benim almamın en hızlı yoluydu, komutları atlamak istemiyorsanız bunu da yapabilirsiniz, ancak bu durumda olmadıkça kesinlikle tavsiye edilmez . acele et .

[mymfolder]
path = /mymfolder
writeable = yes
browseable = yes
public = yes
create mask = 0777
directory mask = 0777
force user = root 

Ve eğer bu rotaya giderseniz, "hosts allow" seçeneğini kullanarak host ile sınırlayabilirsiniz. Bakınız: samba.org/samba/docs/server_security.html
ctorx
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.