Oluşturulan dizinlerde uygun izinleri ayarlamak için samba alamıyorum


17

Samba kullanarak bazı klasörleri paylaşan bir ubuntu sunucum var. İstemci yeni bir klasör veya dosya oluşturduğunda, izinler smb.conf dosyasındaki ayarlara göre ayarlanmaz.

Belirli bir paylaşım için mevcut ayarlarım:

[share]
    path = /mnt/share
    browsable = yes
    guest ok = no
    writable = yes
    read only = no
    create mask = 0774
    directory mask = 0774
    write list = netuser

Bir samba istemcisi (Windows 7 kutusu) bir dosya veya dizin oluşturmak için 'netuser' hesabını kullandığında, izinler

drwxr-sr-- 2 netuser sambashare      4096 2012-01-22 21:14 New folder
-rwxrw-r-- 1 netuser sambashare         0 2012-01-22 21:07 New Text Document.txt

Üst dizinde ayarlanan grup kimliği bayrağı, dolayısıyla sambashare grubu sahibi bulunur. Buradaki fikir, hem samba kullanıcılarının hem de sunucu kullanıcılarının sambashare grubuna ait olması ve böylece dosyaları ve dizinleri düzenleyebilmesi, silebilmesi ve oluşturabilmesidir. Ancak, oluşturulan klasörler grup kümesi için yazma bayrağına sahip olmadığından, sunucu kullanıcıları sudo olmadan bu klasörlerde yeni dosya veya klasör oluşturamaz.

i ekleme ve kaldırma dizin maskesi, zorla dizin modu, dizin güvenlik modu ve zorla dizin güvenlik modu, ancak davranışlar hala kalır. Yeni oluşturulan dosyalar ve klasörler amaçlanan 774 iznini almaz, bunun yerine sırasıyla 764 ve 754 iznini alır.

Neyi kaçırıyorum? Samba neden doğru izinleri ayarlamıyor?

Yanıtlar:


19

Aşağıdaki parametreleri kullanmanız gerektiğini düşünüyorum:

# I changes the permissions to rw-rw-r--
# You should be able to change them to 775 if you need the files to
# be executable
create mask = 664
force create mode = 664
security mask = 664
force security mode = 664

# I set the SGID flag here as I thought this is what you wanted
# You could change to 0775
directory mask = 2775
force directory mode = 2775
directory security mask = 2775
force directory security mode = 2775

Bu ayarların nasıl çalıştığına dair güzel bir açıklama arıyordum, ancak adam smb.conf'dan daha iyi bir şey bulamadım

Bu seçenekler için biraz aşağı kaydırmanız gerekecek.

Temel olarak, kısaca, windows izinleri unix (linux) ile aynı değildir ve samba izinleri nasıl eşlediğini biraz garip.


1
Evet, samba.org/samba/docs/man/manpages-3/smb.conf.5.html ile kabaca aynı manpage gibi görünüyor, sorun şu ki, hangi sekizlik önemli değil ayarladığım değerlerde, oluşturulan dosya veya klasörde de aynı izinleri alıyorum.
Zaz

Size verdiğim tüm seçenekleri belirlediniz mi? Öyleyse, lütfen ilk yayınınızı güncelleyin ve bu noktada bir hata raporu göndermenizi öneririm.
Panther

1
Zaten söyledi .. ama daha yakından inceleme ve test, dizin maskeleri 2 eklemek sorunu çözdü. Çok teşekkürler. : D
Zaz

Fantastik, bunu kabul edilen cevap olarak işaretlediğiniz için teşekkür ederiz, benzer bir sorunu olan diğerlerine yardımcı olur.
Panther

Samba yapılandırması aşırı derecede karmaşık ve anlaşılması gerçekten zor. Örneğin, kuvvet yaratma ve yaratma arasındaki mantıksal fark nedir? İpucu ipucu hayat kurtarıcı - teşekkürler!
Matthias Hryniszak

8

Birçok deneme yanılma işleminden sonra, samba dizinini SGID ve unix gruplarını kullanarak paylaşmak için doğru kod budur. Kullanıcı anonim olarak bağlanırsa r / o alır, oturum açar ve atanan grubun bir üyesi ise r / w alır.

Yazma ayrıcalıklarına sahip kullanıcılara birincil yönetici olarak 'admin' adlı bir grubum var, diğer herkes salt okunur haklara sahip.

Kullanıcıyı kimseye zorlamıyorum, bu yüzden aynı dosyalar üzerinde çalışan farklı insanlar birbirlerini etkilemiyor.

Chmod 2755'i paylaşılan dizine ayarladım, bu yüzden aynı 'admin' grubuyla oluşturulan dizinleri devralır

$ chmod -R 2755 /home/shares/test

Her şeyin iyi olup olmadığını kontrol etme:

$ stat /home/shares/test
Access: (2755/drwxr-sr-x)  Uid: (65534/  nobody)   Gid: ( 1001/   admin)

/Etc/samba/smb.conf dosyasının ilgili kısmı:

[test]
        comment = test
        path = /home/shares/test
        force user = nobody
        read only = No
        create mask = 0664
        force create mode = 0664
        directory mask = 02775
        force directory mode = 02775

Bu yazı beni doğru yola koydu, ancak testparm 4 yanlış yönerge gösterdi, bu yüzden burada sabit yapılandırmayı paylaşıyorum. Samba'da ne kadar az direktif belirtirseniz o kadar iyi çalışır.


7

Ben aynı problem vardı, ama maske direktifleri gibi her şey vermedi bana (Samba 4.3.11) çalışır:

 create mask = 0664
 force create mode = 0664
 directory mask = 02775
 force directory mode = 02775

Çalışan tek seçenek [global] veya paylaşım bölümü altındaydı:

 inherit permissions = yes

Tüm klasör ve dosya izinlerini ihtiyacınıza göre değiştirin, böylece gelecekteki klasörler ve dosyalar aynı izinleri devralır.


Samba sürüm 4.7.6-Ubuntu kullanıyorum. Ve bu da benim için çalışıyor.
Andi S.

için de geçerlidir cevap 4.8.11üzerine freebsdde :)
seğirme

18.04.3'te basit ve mükemmel
Merritt

3

Diğer Unix / Linux / OSX / MacOS cihazlarından bağlanırken çok benzer bir sorun var: siz belirtmedikçe tüm ayarlar yok sayılır

[global]

unix extensions = no

Ve smb://<serverhost>yerine bağlanın cifs://<serverhost>.


0
 Here add this code to the sudo nano smb.conf
 and restart sudo service smbd restart  and access from another local PC/computer using connect with smb://<serverhost>  to create or edit files/folder   html is folder name 

 [html]
   comment = admin access
   path = /var/www/html
   browsable = yes
   guest ok = no
   writable = yes
   valid users = @admin
   create mask = 664
   force create mode = 664
   security mask = 664
   force security mode = 664
   directory mask = 2775
   force directory mode = 2775
   directory security mask = 2775
   force directory security mode = 2775
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.