Saya tidak bisa mendapatkan samba untuk mengatur izin yang tepat pada direktori yang dibuat

17

Saya memiliki server ubuntu berbagi beberapa folder menggunakan samba. Ketika klien membuat folder atau file baru, izin tidak diatur sesuai dengan pengaturan di smb.conf.

Pengaturan saya saat ini untuk bagian tertentu:

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

Ketika klien samba (kotak windows 7) menggunakan akun 'netuser' untuk membuat file atau direktori, izin menjadi

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

Direktori induk memiliki flag id grup yang ditetapkan, dengan demikian pemilik grup sambashare. Idenya adalah bahwa pengguna samba dan pengguna server milik kelompok sambashare, dan dengan demikian harus dapat mengedit, menghapus, dan membuat file dan direktori. Namun, karena folder yang dibuat tidak memiliki tanda tulis untuk kumpulan grup, pengguna server tidak dapat membuat file atau folder baru di folder tersebut tanpa sudo.

Saya telah menguji menambahkan dan menghapus topeng direktori, mode direktori kekuatan, mode keamanan direktori, dan mode keamanan direktori kekuatan, tetapi perilaku masih tetap. File dan folder yang baru dibuat tidak mendapatkan izin 774, tetapi masing-masing 764 dan 754.

Apa yang saya lewatkan? Mengapa samba tidak mengatur izin yang benar?

Zaz
sumber

Jawaban:

19

Saya pikir Anda perlu menggunakan parameter berikut:

# 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

Saya mencari penjelasan yang bagus tentang bagaimana pengaturan ini bekerja, tetapi tidak dapat menemukan yang lebih baik dari itu man smb.conf

Anda harus sedikit gulir ke bawah untuk opsi-opsi itu.

Singkatnya, singkatnya, izin windows tidak sama dengan unix (linux) dan agak aneh bagaimana samba memetakan izin.

Harimau kumbang
sumber
1
Ya, itu tampaknya kira-kira sama dengan halaman manual seperti samba.org/samba/docs/man/manpages-3/smb.conf.5.html yang saya lihat, masalahnya adalah bahwa sepertinya tidak masalah apa pun oktal nilai yang saya tetapkan, saya masih mendapatkan izin yang sama ditetapkan pada file atau folder yang dibuat.
Zaz
Apakah Anda mengatur semua opsi yang saya berikan kepada Anda? Jika demikian, perbarui posting pertama Anda dan pada saat itu saya sarankan Anda mengajukan laporan bug.
Panther
1
Sudah dikatakan .. tetapi pada pemeriksaan dan pengujian lebih dekat, menambahkan 2 ke direktori mask memang memperbaiki masalah. Terimakasih banyak. : D
Zaz
Fantastis, terima kasih telah menandai ini sebagai jawaban yang diterima, itu membantu orang lain dengan masalah yang sama.
Panther
Konfigurasi samba terlalu rumit dan sangat sulit untuk dipahami. Misalnya apa perbedaan logis antara gaya buat dan buat saja ... tidak masuk akal. Petunjuk Anda adalah penyelamat - terima kasih!
Matthias Hryniszak
8

Setelah banyak percobaan dan kesalahan, ini adalah kode yang benar untuk membagikan samba dir menggunakan SGID dan grup unix. Jika pengguna terhubung secara anonim, ia mendapat r / o, jika ia log in dan merupakan anggota grup yang ditugaskan, ia mendapat r / w.

Saya memiliki grup bernama 'admin' yang ditetapkan sebagai grup utama untuk pengguna dengan hak istimewa menulis, semua orang mendapat hak hanya baca.

Saya memaksa pengguna untuk tidak ada, jadi orang yang berbeda yang bekerja pada file yang sama tidak saling mengganggu.

Saya mengatur chmod 2755 pada direktori bersama, sehingga mewarisi direktori yang dibuat dengan grup yang sama 'admin'

$ chmod -R 2755 /home/shares/test

Memeriksa apakah semuanya baik:

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

Bagian yang relevan dari /etc/samba/smb.conf:

[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

Posting ini menempatkan saya di jalur yang benar, tetapi testparm mengungkapkan 4 arahan yang salah, jadi saya membagikan konfigurasi tetap di sini. Dalam samba, semakin sedikit arahan yang Anda tentukan, semakin baik kerjanya.

Andrius K
sumber
6

Saya memiliki masalah yang sama, tetapi segala sesuatu seperti arahan topeng tidak bekerja untuk saya (Samba 4.3.11):

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

Satu-satunya opsi yang berfungsi adalah di bawah bagian [global] atau bagikan:

 inherit permissions = yes

Cukup ubah semua izin folder dan file sesuai kebutuhan Anda, sehingga folder dan file di masa mendatang akan mewarisi izin yang sama.

Medox
sumber
Saya menggunakan Samba versi 4.7.6-Ubuntu. Dan ini juga bekerja untuk saya.
Andi S.
jawaban yang benar untuk 4.8.11pada freebsd, juga :)
jitter
3

Ada masalah yang sangat mirip ketika menghubungkan dari perangkat Unix / Linux / OSX / MacOS lainnya: semua pengaturan diabaikan kecuali Anda tentukan

[global]

unix extensions = no

Dan terhubung dengan smb://<serverhost>alih - alih cifs://<serverhost>.

Erik Carlseen
sumber
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
Ghanshyam Nakiya
sumber