GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come installare e configurare samba su RHEL 8 / CentOS 8

Samba fornisce software server e client per consentire la condivisione di file tra macchine Linux e Windows. Installarlo e configurarlo su RHEL 8 / CentOS 8 è abbastanza semplice. Continua a leggere per imparare come condividere una directory con samba e come applicarvi il contesto SELinux appropriato.

In questo tutorial imparerai:

  • Come installare samba su RHEL8
  • Come abilitare e avviare i demoni smb e nmb
  • Come creare una condivisione samba
  • Come configurare il firewall per consentire l'accesso alla condivisione samba
  • Come impostare il contesto SELinux corretto affinché samba funzioni correttamente

Condivide Samba su RHEL 8 / CentOS 8

Requisiti e convenzioni software utilizzati

Requisiti software e convenzioni della riga di comando Linux
Categoria Requisiti, convenzioni o versione del software utilizzata
Sistema Red Hat Enterprise Linux 8
Software Pacchetti Samba, coreutils e policycoreutils-python-utils
Altro Autorizzazione a eseguire il comando con privilegi di root.
Convenzioni # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando
$ – richiede che i comandi linux dati vengano eseguiti come un normale utente non privilegiato

Vi presentiamo Samba

Samba, come si legge nella homepage del progetto, è un software open source, rilasciato sotto la GPL licenza, che ci consente di condividere file e servizi di stampa utilizzando il SMB/CIFS protocollo.

Il progetto fornisce sia software server che client per consentire l'interoperabilità con macchine Windows, rappresentando la soluzione ideale in ambienti misti. In questo tutorial vedremo come installare Samba su Red Hat Enterprise Linux 8, come configurare una condivisione samba, come configurare il firewall per consentire l'accesso alle risorse condivise e come applicare il contesto SELinux appropriato.

Installazione

La prima cosa che dobbiamo fare è installare samba sulla nostra macchina. Il pacchetto e le librerie necessarie sono disponibili nei repository ufficiali di RHEL 8 / CentOS 8, quindi possiamo installarli semplicemente usando yum o dnf. In questa versione di RHEL/CentOS, il primo comando è solo un "link" al secondo:

$ sudo dnf install samba samba-client

Il pacchetto samba-client non è strettamente necessario, ma le utilità da esso fornite possono essere utili. Una volta installati i pacchetti, dobbiamo avviare e abilitare il smb e il nmb demoni all'avvio. Il primo è il demone che si occupa di eseguire i trasferimenti effettivi e le operazioni di condivisione, mentre il secondo esegue il NetBIOS risoluzioni dei nomi, consentendo alle risorse di apparire durante la navigazione in rete su Windows. Ora possiamo abilitare e avviare entrambi i servizi systemd con un solo comando:

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

Configurazione del firewall

Il passaggio successivo è la configurazione del firewall. Dobbiamo aprire le porte appropriate, in modo che le risorse condivise da samba possano essere accessibili da altre macchine. Il software di gestione del firewall predefinito suRHEL 8 / CentOS 8 è firewalld.

Fortunatamente per noi, non c'è bisogno di aprire le porte manualmente:non ci resta che aggiungere il servizio “samba” alla nostra zona. Un "servizio" è solo un'astrazione che ci consente di consentire il traffico attraverso tutte le porte necessarie a un servizio, facendo riferimento al nome del servizio, invece di dover configurare (e ricordare) ciascuna porta utilizzata da esso. Nel caso in cui desideriamo raccogliere informazioni su un "servizio", possiamo eseguire:

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

Dall'output del comando vediamo che il servizio consentirà il traffico attraverso le porte 173/udp, 138/udp, 139/tcp e 445/tcp. Per aggiungere permanentemente il servizio alla zona predefinita, possiamo eseguire:

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

Durante l'esecuzione del comando abbiamo utilizzato --permanent switch per rendere persistente il nostro cambiamento. Abbiamo anche assunto il default zona da utilizzare. Se volessimo specificare un'altra zona su cui applicare l'azione, avremmo usato il --zone opzione e ha fornito il nome della zona come argomento (ad es. –zone=external). Poiché la nostra modifica è impostata come permanente, affinché diventi effettiva, dobbiamo ricaricare la configurazione del firewall:

$ sudo firewall-cmd --reload

Possiamo verificare che il servizio “samba” sia ora parte della nostra zona, eseguendo:

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

Anche in questo caso, se non viene specificata alcuna zona, il comando viene applicato alla zona predefinita.

Configurazione di una directory condivisa accessibile agli ospiti

Diciamo che vogliamo condividere una directory tramite samba e vogliamo consentire l'accesso gratuito a questa directory agli utenti ospiti, senza che debbano fornire una password. Per ottenere il risultato desiderato, dobbiamo apportare alcune modifiche al /etc/samba/smb.conf file e aggiungi una "stanza" per la nostra condivisione. Apri il file con il tuo editor preferito e nel [global] sezione, aggiungi il testo evidenziato:

[global]
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam

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

La map to guest = bad user istruzione, mapperà i tentativi di accesso con nomi utente errati all'utente ospite predefinito, che, per impostazione predefinita, è nobody . Ciò è necessario per consentire l'accesso anonimo senza dover fornire una password.

Dopo questa modifica, dobbiamo aggiungere una nuova stanza dedicata alla nostra condivisione alla fine del file. Chiameremo la risorsa condivisa “linuxconfig”:

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

Con la configurazione di cui sopra abbiamo dichiarato di voler condividere il contenuto del /mnt/shared directory, senza la necessità di autenticazione dell'utente. Questa configurazione è ovviamente rischiosa, ed è qui riportata solo a titolo di esempio:in uno scenario reale, potresti voler almeno negare l'accesso in scrittura agli ospiti (puoi farlo aggiungendo il writeable = no istruzione). Per rendere effettive le modifiche, dobbiamo riavviare i demoni:

$ sudo systemctl restart {smb,nmb}

Configura una condivisione accessibile solo agli utenti registrati

Per proteggere l'accesso a una risorsa con una richiesta di accesso, quando samba è in esecuzione come server autonomo, dobbiamo aggiungere un utente esistente al database di samba. Le credenziali di questo utente saranno necessarie per accedere alla directory condivisa. Per motivi di sicurezza, è buona norma creare un utente dedicato per l'attività, omettendo la creazione della sua home directory e assegnandogli una shell falsa:

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

Il -M l'opzione passata al comando è la forma abbreviata di --no-create-home , che è abbastanza autoesplicativo; il -s opzione, invece, specifichiamo una shell, in questo caso apposta non valida:/sbin/nologin . A questo punto l'utente non ha nemmeno bisogno di avere una password impostata sul nostro sistema.

Una volta creato l'utente, dobbiamo aggiungerlo al database di samba:possiamo eseguire l'operazione utilizzando il smbpasswd comando:

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

Dopo aver eseguito il comando, ci viene chiesto di assegnare una password per l'utente, e anche di confermarla:questa password sarà valida solo nel contesto samba, non ha nulla a che fare con l'account utente sul nostro sistema. Per limitare la condivisione che abbiamo creato in precedenza, dobbiamo apportare una piccola modifica nella sezione dedicata:

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

Possiamo verificare che la nostra configurazione sia valida, utilizzando il testparm comando:

$ 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

Ancora una volta, dobbiamo riavviare smb e nmb demoni per rendere effettive le nostre modifiche. La directory condivisa sarà ora accessibile solo dopo aver fornito le credenziali corrette.

Imposta SELinux per samba

SELinux è spesso visto come una complicazione e disabilitato immediatamente. Questo non è necessario:dobbiamo solo imparare a configurarlo e sfruttare il miglioramento della sicurezza che fornisce. Affinché la nostra condivisione samba funzioni quando SELinux è in modalità "enforcing", dobbiamo assegnare il contesto appropriato alla nostra directory e ai nostri file condivisi:

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

Nell'esempio sopra, abbiamo usato chcon comando con il -t opzione, per modificare il TYPE sezione del contesto SELinux in samba_share_t . Abbiamo anche usato il -R passare per rendere il comando ricorsivo. Questa modifica sopravviverà a un riavvio, ma non a una rietichettatura del sistema se esiste una politica predefinita per la nostra directory e i nostri file, perché in tal caso l'impostazione predefinita verrebbe riapplicata.

Se vogliamo che la nostra modifica sopravviva a un evento di rietichettatura, dobbiamo aggiungere la nostra regola alla politica. Possiamo farlo usando il semanage comando:

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

Dato che abbiamo usato il (/.*)? regex, la regola verrà applicata a tutto il contenuto della directory "condivisa" e alla directory stessa. Possiamo verificare che la nostra regola sia stata aggiunta alla norma elencando le etichette in uso nel nostro sistema:

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

Ora dovremmo avere una configurazione di samba funzionante. Per modificare ulteriormente la configurazione di samba potrebbe essere necessario manipolare anche i booleani di SELinux. Ad esempio, quando si aggiungono utenti esistenti a samba, per consentire la condivisione delle loro directory home, è necessario abilitare il booleano SELinux dedicato. Per elencare tutti i booleani relativi a samba, possiamo eseguire:

$ 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

Nell'output sopra, la seconda colonna indica il valore corrente del booleano, mentre la terza quello di default (entrambi sono spenti, in questo caso). Il booleano che vogliamo attivare, per abilitare la condivisione delle home directory, è samba_enable_home_dirs . Possiamo eseguire l'operazione usando il setsebool comando:

$ sudo setsebool samba_enable_home_dirs=1

Conclusioni

In questo tutorial abbiamo visto come installare samba su un sistema RHEL 8 / CentOS 8. Abbiamo anche visto come condividere una directory, consentendo l'accesso agli ospiti o limitandola agli utenti autenticati. Abbiamo anche visto come configurare il firewall in modo che la condivisione sia accessibile da altre macchine sulla rete.

Infine, abbiamo visto come eseguire le modifiche necessarie per avere una configurazione samba funzionante con SELinux in modalità "enforcing". Se sei interessato a SELinux, puoi anche leggere il nostro articolo sull'argomento.


Cent OS
  1. Come installare e configurare Nginx su CentOS 7

  2. Come installare e configurare R sul sistema Linux RHEL 8 / CentOS 8

  3. CentOS / RHEL 7 :Come installare e configurare telnet

  4. Come installare e configurare Samba in CentOS/RHEL

  5. Come installare e configurare telnet in RHEL / CentOS 5,6

Come installare e configurare il server VNC in CentOS 7 / RHEL 7

Come installare e configurare Samba su CentOS 8

Come installare Samba su RHEL e CentOS Stream

Come installare e configurare Jenkins su CentOS 8 / RHEL 8

Come installare e configurare MariaDB in CentOS / RHEL 7

Come installare e configurare il server VNC su CentOS/RHEL 8