187 lines
6.6 KiB
Markdown
187 lines
6.6 KiB
Markdown
|
# samba
|
|||
|
|
|||
|
Esistono diversi protocolli per la condivisione di files, ma se nella rete si trovano sia computer con GNU/Linux che con Microsoft Windows,
|
|||
|
allora è quasi inevitabile che la scelta debba ricadere su SMB/CIFS.
|
|||
|
|
|||
|
samba è una suite di strumenti utilizzati per la condivisione tra reti miste Windows-GNU/Linux, implementando proprio il protocollo di rete `SMB/CIFS`.
|
|||
|
|
|||
|
## Installazione
|
|||
|
|
|||
|
```bash
|
|||
|
apt install libcups2 samba samba-common cups smb4k
|
|||
|
```
|
|||
|
## Creazione directory
|
|||
|
|
|||
|
Prima di andare a configurare samba occorre creare le shares, ovvero le directory da condividere.
|
|||
|
|
|||
|
In questo esempio verrà creata una directory share dentro `/srv`, come indicato dal Filesystem Hierarchy Standard (FHS):
|
|||
|
|
|||
|
```bash
|
|||
|
sudo mkdir -p /srv/samba
|
|||
|
|
|||
|
sudo mkdir /srv/samba/pubblici
|
|||
|
sudo mkdir /srv/samba/files_privati
|
|||
|
```
|
|||
|
Vedremo successivamente quali permessi impostare a queste directory.
|
|||
|
|
|||
|
## Configurazione
|
|||
|
|
|||
|
Tutti i parametri di configurazione di samba si trovano in `/etc/samba/smb.conf`.
|
|||
|
|
|||
|
Ogni volta che si apportano delle modifiche al file sopra citato è necessario riavviare il servizio di samba:
|
|||
|
|
|||
|
```bash
|
|||
|
sudo systemctl restart smbd.service
|
|||
|
sudo systemctl restart nmbd.service
|
|||
|
```
|
|||
|
|
|||
|
### Sezione global
|
|||
|
|
|||
|
La sezione `[global]` si trova sempre all'inizio della configurazione del file `/etc/samba/smb.conf`.
|
|||
|
|
|||
|
Definisce le impostazioni del server samba e le opzioni di default che verranno assegnate alle condivisioni. I principali parametri del server:
|
|||
|
|
|||
|
```bash
|
|||
|
[global]
|
|||
|
allow hosts = 192.168.1.0/24 # Range di IP che possono accedere al server
|
|||
|
workgroup = WORKGROUP # Nome del gruppo di lavoro
|
|||
|
netbios = SAMBA # Nome della macchina nel gruppo di lavoro
|
|||
|
security = USER # Livello di sicurezza delle condivisioni
|
|||
|
server string = FILE SERVER # Descrizione della macchina
|
|||
|
create mask = 755 # Permessi sulle cartelle
|
|||
|
encrypt passwords = yes # Abilitare/disabilitare la cifratura della password
|
|||
|
```
|
|||
|
Nel parametro `security` si poteva utilizzare in alternativa il valore `SHARE` in modo da creare condivisioni liberamente accessibili, senza necessità di autenticazioni.
|
|||
|
|
|||
|
Altri possibili valori sono:
|
|||
|
|
|||
|
- `user`: richiede utente e password per l'accesso alla condivisione;
|
|||
|
- `domain`: questo valore va assegnato quando si vuole configurare il server samba come Domain Controller;
|
|||
|
- `ADS`: questo valore consente al server samba di agganciarsi a un dominio Active Directory
|
|||
|
|
|||
|
Se si volesse rendere accessibili delle condivisioni anche ad utenti senza credenziali, inserire anche questi due parametri:
|
|||
|
|
|||
|
```bash
|
|||
|
map to guest = Bad User
|
|||
|
guest account = nobody
|
|||
|
```
|
|||
|
|
|||
|
### Sezione condivisione
|
|||
|
|
|||
|
Aggiungere la cartella nel file di configurazione `/etc/samba/smb.conf`:
|
|||
|
|
|||
|
```bash
|
|||
|
[shared]
|
|||
|
comment = Cartella condivisa # Commento sulla condivisione
|
|||
|
path = /cartella/da/condividere # Percorso della condivisione
|
|||
|
browseable = yes # Rende visibile la condivisione
|
|||
|
public = yes # Rende la cartella accessibile
|
|||
|
create mask = 0755 # Permessi dei file
|
|||
|
```
|
|||
|
|
|||
|
Dove /cartella/da/condividere è la directory da condividere.
|
|||
|
|
|||
|
#### Esempio di condivisione pubblica
|
|||
|
|
|||
|
Ecco alcuni esempi di condivisioni, ciascuno con una politica di sicurezza differente. Sotto alla sezione global scrivere:
|
|||
|
|
|||
|
```bash
|
|||
|
[pubblici]
|
|||
|
comment = files pubblici
|
|||
|
path = /srv/samba/pubblici
|
|||
|
writeable = yes
|
|||
|
browsable = yes
|
|||
|
guest ok = yes
|
|||
|
read only = no
|
|||
|
create mask = 770
|
|||
|
```
|
|||
|
|
|||
|
A questa condivisione avrà accesso qualsiasi utente di sistema.
|
|||
|
|
|||
|
Se in [global] è presente l'opzione `map to guest = Bad User` non verrà richiesta alcuna password e l'utente che verrà utilizzato è quello indicato in guest account (nobody).
|
|||
|
|
|||
|
In caso contrario verranno chieste le credenziali, ma qualsiasi utente di sistema potrà accedervi.
|
|||
|
|
|||
|
Con `create mask` vengono indicati i permessi nella classica scrittura Unix.
|
|||
|
|
|||
|
#### Esempio di condivisione privata
|
|||
|
|
|||
|
```bash
|
|||
|
[files_privati]
|
|||
|
comment = Files privati di Luca
|
|||
|
path = /srv/samba/files_privati
|
|||
|
browsable = no
|
|||
|
guest ok = no
|
|||
|
valid users = Luca
|
|||
|
```
|
|||
|
|
|||
|
A questa condivisione avrà accesso solamente l'utente Luca.
|
|||
|
|
|||
|
Tramite l'opzione browsable=no è impedita la visualizzazione della cartella tra le condivisioni samba. L'utente Luca per accedervi dovrà richiamarla direttamente.
|
|||
|
|
|||
|
## Montare condivisione
|
|||
|
|
|||
|
Per montare una condivisone samba presente su un altro file server, si utilizza il seguente comando:
|
|||
|
|
|||
|
```bash
|
|||
|
smbmount //SERVER/condivisione /punto/di/mount
|
|||
|
```
|
|||
|
|
|||
|
Dove `/punto/di/mount/` è una directory creata con privilegi di amministrazione solitamente in `/media`.
|
|||
|
|
|||
|
## Connessione al server
|
|||
|
|
|||
|
Per connettersi ad un server samba si usa:
|
|||
|
|
|||
|
```bash
|
|||
|
smbclient //SERVER/condivisione
|
|||
|
```
|
|||
|
### Sicurezza e controllo accessi
|
|||
|
|
|||
|
L'accesso alle directory condivise viene regolato sia nativamente a livello di file system, sia a livello di condivisione samba.
|
|||
|
|
|||
|
#### Aggiungere utente
|
|||
|
|
|||
|
Per quanto riguarda la condivisione `[files_privati]`, solo l'utente Luca può accedervi e scrivere al suo interno.
|
|||
|
Perché questo funzioni però bisogna creare l'utente Luca su samba e assegnargli, sul server, la directory interessata.
|
|||
|
|
|||
|
Prima di aggiunge un utente su samba bisogna che questo sia presente nel sistema.
|
|||
|
|
|||
|
```bash
|
|||
|
sudo adduser luca --home=/home/public --shell=/bin/false --disabled-password
|
|||
|
```
|
|||
|
|
|||
|
L’opzione `--shell=/bin/false disabilita` l’accesso alla shell da parte dell’utente creato, che non avrà quindi possibilità di fare un vero e proprio login. Questo per ragioni di sicurezza, come accade per gli account di sistema.
|
|||
|
|
|||
|
Creare quindi l'utente in samba:
|
|||
|
|
|||
|
```bash
|
|||
|
sudo smbpasswd -a Luca
|
|||
|
```
|
|||
|
|
|||
|
Creato l'utente bisogna ora assegnargli la directory alla quale dovrà accedere:
|
|||
|
|
|||
|
```bash
|
|||
|
sudo chown luca files_privati
|
|||
|
sudo chmod -R 700 /srv/samba/files_privati
|
|||
|
```
|
|||
|
|
|||
|
In qualsiasi momento è possibile vedere la lista degli utenti samba con relative informazioni tramite il comando:
|
|||
|
|
|||
|
```bash
|
|||
|
sudo pdbedit -L -v
|
|||
|
```
|
|||
|
dove -L richiede l'elenco degli utenti, l'opzione -v, invece, sta per `verbose`.
|
|||
|
|
|||
|
## Log di samba
|
|||
|
|
|||
|
Tutti i log di samba sono presenti nella cartella `/var/log/samba`.
|
|||
|
|
|||
|
## Collegamenti
|
|||
|
|
|||
|
- [https://wiki.ubuntu-it.org/Server/samba](https://wiki.ubuntu-it.org/Server/samba)
|
|||
|
- [https://www.mrw.it/linux/creiamo-file-server-samba_7411.html](https://www.mrw.it/linux/creiamo-file-server-samba_7411.html)
|
|||
|
- [https://guide.debianizzati.org/index.php/Installare_Samba_per_condividere_directory_-_Debian_Stretch](https://guide.debianizzati.org/index.php/Installare_Samba_per_condividere_directory_-_Debian_Stretch)
|
|||
|
- [https://guide.debianizzati.org/index.php/Samba:_guida_rapida](https://guide.debianizzati.org/index.php/Samba:_guida_rapida)
|
|||
|
|