GNU/Linux >> Belajar Linux >  >> Cent OS

Cara menginstal dan mengkonfigurasi samba di RHEL 8 / CentOS 8

Samba menyediakan perangkat lunak server dan klien untuk memungkinkan berbagi file antara mesin Linux dan Windows. Menginstal dan mengkonfigurasinya di RHEL 8 / CentOS 8, cukup mudah. Teruslah membaca untuk mempelajari cara berbagi direktori dengan samba, dan cara menerapkan konteks SELinux yang sesuai ke dalamnya.

Dalam tutorial ini Anda akan mempelajari:

  • Cara menginstal samba di RHEL8
  • Cara mengaktifkan dan memulai daemon smb dan nmb
  • Cara membuat berbagi samba
  • Cara menyiapkan firewall agar samba share dapat diakses
  • Cara menyiapkan konteks SELinux yang benar agar samba berfungsi dengan benar

Samba berbagi di RHEL 8 / CentOS 8

Persyaratan dan Konvensi Perangkat Lunak yang Digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, Konvensi, atau Versi Perangkat Lunak yang Digunakan
Sistem Red Hat Enterprise Linux 8
Perangkat Lunak Paket Samba, coreutils, dan policycoreutils-python-utils
Lainnya Izin untuk menjalankan perintah dengan hak akses root.
Konvensi # – membutuhkan perintah linux yang diberikan untuk dieksekusi dengan hak akses root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$ – membutuhkan perintah linux yang diberikan untuk dieksekusi sebagai pengguna biasa yang tidak memiliki hak istimewa

Memperkenalkan Samba

Samba, sebagaimana dinyatakan di beranda proyek, adalah perangkat lunak sumber terbuka, dirilis di bawah GPL lisensi, yang memungkinkan kami untuk berbagi file dan layanan cetak menggunakan SMB/CIFS protokol.

Proyek ini menyediakan perangkat lunak server dan klien untuk memungkinkan interoperasi dengan mesin Windows, yang mewakili solusi ideal dalam lingkungan campuran. Dalam tutorial ini kita akan melihat cara menginstal Samba di Red Hat Enterprise Linux 8, cara mengatur samba share, cara mengatur firewall untuk mengizinkan akses ke sumber daya bersama, dan cara menerapkan konteks SELinux yang sesuai.

Pemasangan

Hal pertama yang harus kita lakukan adalah menginstal samba di mesin kita. Paket dan library yang dibutuhkan tersedia di repositori resmi RHEL 8 / CentOS 8, oleh karena itu kita dapat menginstalnya hanya dengan menggunakan yum atau dnf. Dalam versi RHEL/CentOS ini, perintah pertama hanyalah “tautan” ke yang kedua:

$ sudo dnf install samba samba-client

Paket samba-client tidak sepenuhnya diperlukan, tetapi utilitas yang disediakan olehnya dapat berguna. Setelah paket diinstal, kita harus memulai dan mengaktifkan smb dan nmb daemon saat boot. Yang pertama adalah daemon yang menangani transfer aktual dan operasi berbagi, sedangkan yang kedua melakukan NetBIOS resolusi nama, memungkinkan sumber daya muncul saat menelusuri jaringan di Windows. Kami sekarang dapat mengaktifkan dan memulai kedua layanan systemd hanya dengan satu perintah:

$ sudo systemctl enable --now {smb,nmb}

Mengonfigurasi firewall

Langkah selanjutnya adalah konfigurasi firewall. Kita harus membuka port yang sesuai, sehingga sumber daya yang dibagikan samba dapat diakses dari mesin lain. Perangkat lunak manajemen firewall default padaRHEL 8 / CentOS 8, adalah firewall.

Beruntung bagi kami, tidak perlu membuka port secara manual:yang harus kami lakukan hanyalah menambahkan layanan "samba" ke zona kami. Sebuah "layanan" hanyalah sebuah abstraksi yang memungkinkan kita mengizinkan lalu lintas melalui semua port yang dibutuhkan oleh suatu layanan, dengan merujuk nama layanan, daripada harus mengatur (dan mengingat) setiap port yang digunakan olehnya. Jika kami ingin mengumpulkan informasi tentang "layanan", kami dapat menjalankan:

$ sudo firewall-cmd --info-service samba
samba
  ports: 137/udp 138/udp 139/tcp 445/tcp
  protocols:
  source-ports:
  modules: netbios-ns
  destination:

Dari keluaran perintah tersebut kita melihat bahwa layanan akan mengizinkan lalu lintas melalui port 173/udp, 138/udp, 139/tcp dan 445/tcp. Untuk menambahkan layanan secara permanen ke zona default, kita dapat menjalankan:

$ sudo firewall-cmd --permanent --add-service=samba

Saat menjalankan perintah, kami menggunakan --permanent beralih untuk membuat perubahan kita terus-menerus. Kami juga mengasumsikan default zona yang akan digunakan. Jika kita ingin menentukan zona lain untuk tindakan yang akan diterapkan, kita akan menggunakan --zone opsi, dan memberikan nama zona sebagai argumen (mis. –zone=external). Karena perubahan kita disetel permanen, agar efektif, kita harus memuat ulang konfigurasi firewall:

$ sudo firewall-cmd --reload

Kami dapat memverifikasi bahwa layanan "samba" sekarang menjadi bagian dari zona kami, dengan menjalankan:

$ sudo firewall-cmd --list-services
cockpit dhcpv6-client http samba ssh

Sekali lagi, jika tidak ada zona yang ditentukan, perintah akan diterapkan ke zona default.

Mengonfigurasi direktori bersama yang dapat diakses oleh tamu

Katakanlah kita ingin berbagi direktori melalui samba, dan kita ingin memberikan akses gratis ke direktori ini kepada pengguna tamu, tanpa mereka harus memberikan kata sandi. Untuk mendapatkan hasil yang diinginkan, kita harus melakukan beberapa perubahan pada /etc/samba/smb.conf file, dan tambahkan "stanza" untuk bagian kami. Buka file dengan editor favorit Anda, dan di [global] bagian, tambahkan teks yang disorot:

[global]
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
        map to guest = bad user

map to guest = bad user instruksi, akan memetakan upaya login dengan nama pengguna yang buruk ke pengguna tamu default, yang, secara default adalah nobody . Ini diperlukan untuk memungkinkan akses anonim tanpa harus memberikan kata sandi.

Setelah perubahan ini, kita harus menambahkan bait baru yang didedikasikan untuk bagian kita di akhir file. Kami akan memberi nama sumber daya bersama "linuxconfig":

[linuxconfig]
        path = /mnt/shared
        guest only = yes

Dengan pengaturan di atas, kami menyatakan bahwa kami ingin membagikan konten /mnt/shared direktori, tanpa perlu otentikasi pengguna. Penyiapan ini jelas berisiko, dan di sini dilaporkan hanya sebagai contoh:dalam skenario dunia nyata, Anda mungkin ingin setidaknya menolak akses tulis ke tamu (Anda dapat melakukannya dengan menambahkan writeable = no petunjuk). Agar perubahan efektif, kita harus memulai ulang daemon:

$ sudo systemctl restart {smb,nmb}

Konfigurasikan bagian yang hanya dapat diakses oleh pengguna terdaftar

Untuk melindungi akses ke sumber daya dengan prompt login, ketika samba dijalankan sebagai server mandiri, kita harus menambahkan pengguna yang ada ke database samba. Kredensial pengguna ini akan diperlukan untuk mengakses direktori bersama. Untuk alasan keamanan, merupakan praktik yang baik untuk membuat pengguna khusus untuk tugas tersebut, menghilangkan pembuatan direktori home-nya, dan memberinya shell palsu:

$ sudo adduser -M sambauser -s /sbin/nologin

-M opsi yang diteruskan ke perintah adalah bentuk singkat untuk --no-create-home , yang cukup jelas; -s sebagai gantinya, mari kita tentukan shell, dalam hal ini shell yang tidak valid dengan sengaja:/sbin/nologin . Pada titik ini pengguna bahkan tidak perlu menyetel kata sandi di sistem kami.

Setelah pengguna dibuat, kita perlu menambahkannya ke database samba:kita dapat melakukan operasi dengan menggunakan smbpasswd perintah:

$ sudo smbpasswd -a sambauser
New SMB password:
Retype new SMB password:
Added user sambauser.

Setelah menjalankan perintah, kami diminta untuk menetapkan kata sandi untuk pengguna, dan juga untuk mengonfirmasinya:kata sandi ini hanya akan valid dalam konteks samba, tidak ada hubungannya dengan akun pengguna di sistem kami. Untuk membatasi pembagian yang telah kita buat sebelumnya, kita harus membuat sedikit perubahan di bagian khusus:

[linuxconfig]
        path = /mnt/shared
        guest ok = no

Kami dapat memverifikasi bahwa pengaturan kami valid, dengan menggunakan testparm perintah:

$ testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Processing section "[linuxconfig]"
Loaded services file OK.
Server role: ROLE_STANDALONE

Sekali lagi, kita harus memulai ulang smb dan nmb daemon agar perubahan kami efektif. Direktori bersama sekarang hanya dapat diakses setelah memberikan kredensial yang benar.

Siapkan SELinux untuk samba

SELinux sering terlihat seperti komplikasi, dan langsung dinonaktifkan. Ini tidak perlu:kita hanya perlu mempelajari cara mengkonfigurasinya, dan memanfaatkan peningkatan keamanan yang diberikannya. Agar samba share kami berfungsi saat SELinux dalam mode "enforcing", kami harus menetapkan konteks yang sesuai ke direktori dan file bersama kami:

$ sudo chcon -R -t samba_share_t /mnt/shared

Pada contoh di atas, kami menggunakan chcon perintah dengan -t pilihan, untuk mengubah TYPE bagian dari konteks SELinux ke samba_share_t . Kami juga menggunakan -R beralih untuk membuat perintah rekursif. Perubahan ini akan bertahan dari reboot, tetapi bukan pelabelan ulang sistem jika ada kebijakan default untuk direktori dan file kami, karena dalam kasus seperti itu, pengaturan default akan diterapkan kembali.

Jika kita ingin perubahan kita bertahan dari peristiwa pelabelan ulang, kita harus menambahkan aturan kita ke kebijakan. Kita dapat melakukannya dengan menggunakan semanage perintah:

$ sudo semanage fcontext -a -t samba_share_t "/mnt/shared(/.*)?"

Karena kita menggunakan (/.*)? regex, aturan akan diterapkan ke semua konten direktori "bersama", dan ke direktori itu sendiri. Kami dapat memverifikasi bahwa aturan kami telah ditambahkan ke kebijakan dengan mencantumkan label yang digunakan di sistem kami:

$ sudo semanage fcontext -l | grep /mnt/shared
/mnt/shared(/.*)?                                  all files          system_u:object_r:samba_share_t:s0

Kita sekarang harus memiliki pengaturan samba yang berfungsi. Untuk lebih lanjut men-tweak konfigurasi samba, kita mungkin juga perlu memanipulasi boolean SELinux. Misalnya, saat menambahkan pengguna yang ada ke samba, agar direktori home mereka dapat dibagikan, kita harus mengaktifkan boolean SELinux khusus. Untuk membuat daftar semua boolean yang terkait dengan samba, kita dapat menjalankan:

$ sudo semanage boolean -l|grep samba
samba_create_home_dirs         (off  ,  off)  Allow samba to create home dirs
samba_domain_controller        (off  ,  off)  Allow samba to domain controller
samba_enable_home_dirs         (off  ,  off)  Allow samba to enable home dirs
samba_export_all_ro            (off  ,  off)  Allow samba to export all ro
samba_export_all_rw            (off  ,  off)  Allow samba to export all rw
samba_load_libgfapi            (off  ,  off)  Allow samba to load libgfapi
samba_portmapper               (off  ,  off)  Allow samba to portmapper
samba_run_unconfined           (off  ,  off)  Allow samba to run unconfined
samba_share_fusefs             (off  ,  off)  Allow samba to share fusefs
samba_share_nfs                (off  ,  off)  Allow samba to share nfs
sanlock_use_samba              (off  ,  off)  Allow sanlock to use samba
tmpreaper_use_samba            (off  ,  off)  Allow tmpreaper to use samba
use_samba_home_dirs            (off  ,  off)  Allow use to samba home dirs
virt_use_samba                 (off  ,  off)  Allow virt to use samba

Pada output di atas, kolom kedua menunjukkan nilai boolean saat ini, sedangkan yang ketiga adalah default (keduanya mati, dalam hal ini). Boolean yang ingin kita aktifkan, untuk mengaktifkan berbagi direktori home, adalah samba_enable_home_dirs . Kita dapat melakukan operasi dengan menggunakan setsebool perintah:

$ sudo setsebool samba_enable_home_dirs=1

Kesimpulan

Dalam tutorial ini kita melihat cara menginstal samba pada sistem RHEL 8 / CentOS 8. Kami juga melihat cara berbagi direktori, mengizinkan akses ke tamu atau membatasinya untuk pengguna yang diautentikasi. Kami juga melihat cara mengonfigurasi firewall agar share dapat diakses dari mesin lain di jaringan.

Akhirnya, kami melihat bagaimana melakukan perubahan yang diperlukan agar pengaturan samba bekerja dengan SELinux dalam mode "menegakkan". Jika Anda tertarik dengan SELinux, Anda juga dapat membaca artikel kami tentang topik tersebut.


Cent OS
  1. CentOS / RHEL 7 :Cara menginstal dan mengkonfigurasi telnet

  2. Cara menginstal dan mengkonfigurasi Samba di CentOS / RHEL

  3. Cara Menginstal dan mengkonfigurasi telnet di RHEL / CentOS 5,6

  1. Cara Menginstal dan Mengkonfigurasi Nginx di CentOS 7

  2. Cara menginstal dan mengkonfigurasi R pada Sistem Linux RHEL 8 / CentOS 8

  3. Cara Menginstal dan Mengonfigurasi Samba di CentOS 7

  1. Cara Install dan Konfigurasi oVirt 4.0 di CentOS 7 / RHEL 7

  2. Cara Menginstal dan Mengkonfigurasi Jenkins di CentOS 7 dan RHEL 7

  3. Cara Instal dan Konfigurasi Nextcloud di CentOS 7 / RHEL 7