Bagaimana cara membuat share Samba yang dapat ditulis dari Windows tanpa izin 777?

33

Saya memiliki jalur di mesin Linux (Debian 8) yang ingin saya bagikan dengan Samba 4 ke komputer Windows (Win7 dan 8 dalam domain). Di saya, smb.confsaya melakukan hal berikut:

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

Saya memiliki akses baca yang sempurna dari Windows. Tetapi untuk memiliki akses tulis, saya harus melakukan chmod -R 777 /path/to/shareagar dapat menulis dari Windows.

Apa yang saya inginkan adalah akses tulis dari Windows setelah saya memberikan kredensial Linux dari pemilik Linux /path/to/share.

Saya sudah mencoba:

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

Lalu Windows meminta kredensial, tapi apa pun yang saya masukkan, selalu ditolak.

Apa cara yang benar untuk mendapatkan akses tulis ke saham Samba dari komputer domain Windows tanpa memberikan 777?

Foo Bar
sumber

Jawaban:

49

Saya sarankan untuk membuat pengguna khusus untuk share itu dan menentukannya di force user(lihat dokumen) .

Buat pengguna ( shareusermisalnya) dan atur pemilik semua yang ada di folder bagikan kepada pengguna itu:

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

Kemudian tambahkan force userdan izinkan pengaturan topeng di smb.conf:

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

Perhatikan bahwa guest okini adalah sinonim untuk public.

yaegashi
sumber
1
Saya memiliki masalah yang sama dan semua pencarian google menunjukkan cara kotor untuk hanya menggunakan 777. Saya ingin 775 untuk folder bersama saya dan saya ingin file dibuat menggunakan linux "defaultUser" saya, saya juga menggunakan public = yes. Folder adalah 775, buat dan dir mask adalah 775 tetapi di Windows itu tidak bisa ditulisi dan saya tidak mengerti mengapa. Menambahkan force user = defaultUserberhasil bagi saya.
firepol
Saya tidak bisa menjalankannya, setiap kali saya mencoba berbagi direktori, saya hanya mendapatkan jendela yang memberi tahu saya bahwa saya perlu memberikan izin menulis "kepada orang lain" untuk berbagi direktori.
Mark Kramer
Saya mengerti, masalahnya adalah lokasi smb.conf. Google dan bahkan dokumentasi sambas mengatakan file itu harus di /usr/local/samba/libtetapi sebenarnya itu dalam/etc/samba
Mark Kramer
1
@MarkKramer Adalah ide yang baik untuk mengikuti dokumen yang termasuk dalam distribusi Linux spesifik Anda karena banyak distro mengatur ulang file agar sesuai dengan FHS (Filesystem Hierarchy Standard). Saya sarankan membaca dan mencari dokumen yang dikirim dengan distro Anda karena google tidak selalu jawaban terbaik, misalnya Anda dapat memperoleh info untuk versi perangkat lunak yang berbeda. Salam Hormat.
RobertL
2

Di pengaturan berbagi di smb.conf, Anda harus menentukan nama pengguna dan / atau grup yang diizinkan menulis ke share, menggunakan write list = ...baris.

Contoh:

[myshare]
...
write list = my_linux_username

Maka Anda harus menggunakan smbpasswdperintah untuk mengatur kata sandi untuk mengotentikasi my_linux_usernameSamba:

sudo smbpasswd -a my_linux_username

Langkah ini diperlukan karena kata sandi sistem standar di /etc/shadowhash dalam algoritma yang tidak sesuai dengan algoritma hash kata sandi yang digunakan dalam protokol SMB. Ketika klien mengirim paket otentikasi SMB, itu termasuk kata sandi hash. Ini hanya dapat dibandingkan dengan hash kata sandi lain yang menggunakan algoritma yang sama.

(Sangat, instruksi yang sangat lama dari milenium sebelumnya dapat merekomendasikan penonaktifan enkripsi kata sandi di Samba, dan menggunakan peretasan registri tertentu untuk memungkinkan Windows memancarkan kata sandi yang tidak terenkripsi ke jaringan. Saran ini sudah usang : peretasan registri tersebut mungkin tidak lagi berfungsi dalam versi saat ini dari Windows, dan izinkan siapa saja yang dapat memonitor lalu lintas jaringan Anda dengan sepele menangkap kata sandi Anda.)


Ada satu hal lagi yang harus Anda lakukan di sisi klien. Ketika sistem klien Windows Anda digabungkan ke domain Active Directory dan Anda masuk dengan akun AD, secara otomatis awalan semua nama pengguna yang tidak memenuhi syarat dengan nama domain AD dari pengguna, yaitu Anda akan mengautentikasi AD_DOMAIN\your_username, bukan hanya your_username.

Jika Anda masuk dengan akun lokal (atau sistem klien Anda tidak bergabung dengan domain AD), Windows dapat secara otomatis mengawali nama pengguna dengan nama host klien kecuali Anda menentukan nama domain lain.

Untuk berhasil masuk ke server Samba yang berdiri sendiri dari klien Windows yang berdiri sendiri, Anda mungkin harus menentukan nama pengguna Anda sebagai SAMBA_SERVER_HOSTNAME\your_username.

Kalau tidak, Samba akan melihat nama pengguna sebagai WINDOWS_CLIENT_HOSTNAME\your_username, menyimpulkan bahwa ia tidak memiliki cara untuk memverifikasi pengguna yang memiliki nama domain WINDOWS_CLIENT_HOSTNAME, dan akan menolak login.

(Versi Samba yang lebih baru mungkin memiliki pemeriksaan bawaan untuk situasi khusus ini, dan mereka mungkin mengizinkan Anda untuk mengaksesnya. Tetapi ini pada dasarnya bagaimana otentikasi SMB bekerja "di bawah tenda", dan jika Anda perlu berurusan dengan versi Samba yang lama , mungkin masih berguna.)

telcoM
sumber
1

Saya mencari ini karena saya sedang terburu-buru dan bahkan tidak punya waktu untuk fokus membuat pengguna dan ...

Hanya harus mengambil data dari mesin debian 9 sesegera mungkin dan ini adalah cara tercepat yang saya kira, jika Anda ingin menghindari perintah lompatan Anda juga dapat melakukan ini tetapi itu jelas tidak dianjurkan kecuali Anda berada dalam cepat .

[mymfolder]
path = /mymfolder
writeable = yes
browseable = yes
public = yes
create mask = 0777
directory mask = 0777
force user = root 
Alpha2k
sumber
Dan jika Anda memilih rute ini, Anda dapat membatasi host menggunakan opsi "host allow". Lihat: samba.org/samba/docs/server_security.html
ctorx