mywiki/raspberry/sambashare.md

409 lines
12 KiB
Markdown
Raw Normal View History

2023-03-26 21:32:37 +02:00
# Nas con samba
## Impostare IP statico
Collegarsi al raspberry via ssh, quindi modificare il seguente file, aggiungendo le righe sottostanti:
```bash
nano /etc/dhcpcd.conf
interface wlan0
static ip_address=192.168.1.107/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 5.2.75.75
```
## Identificare e partizionare i dischi
```bash
fdisk -l
Disk /dev/sda: 12.73 TiB, 14000519643136 bytes, 27344764928 sectors
Disk model: Generic
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 4AE9456D-B7BA-4011-87ED-A73741BAA769
Device Start End Sectors Size Type
/dev/sda1 2048 27344764894 27344762847 12.7T Linux filesystem
Disk /dev/sdb: 12.73 TiB, 14000519643136 bytes, 27344764928 sectors
Disk model: Generic
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 1499002A-74AD-446F-994F-F07DF88B7E16
```
È possibile identificare i dischi anche con altri comandi:
```bash
lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sda
sdb
mmcblk0
|-mmcblk0p1 vfat FAT32 bootfs 37CA-39EC 224.3M 12% /boot
`-mmcblk0p2 ext4 1.0 rootfs a4af13c6-d165-4cbd-a9f6-c961fef8255d 54.4G 3% /
blkid
/dev/mmcblk0p1: LABEL_FATBOOT="bootfs" LABEL="bootfs" UUID="37CA-39EC" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="be140fba-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="a4af13c6-d165-4cbd-a9f6-c961fef8255d" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="be140fba-02"
/dev/sda: PTUUID="4ae9456d-b7ba-4011-87ed-a73741baa769" PTTYPE="gpt"
/dev/sdb: PTUUID="1499002a-74ad-446f-994f-f07df88b7e16" PTTYPE="gpt"
```
### Partizionare i dischi
```bash
fdisk /dev/sda
Welcome to fdisk (util-linux 2.36.1).
Command (m for help): m
Help:
GPT
M enter protective/hybrid MBR
Generic
d delete a partition
F list free unpartitioned space
l list known partition types
n add a new partition
p print the partition table
t change a partition type
v verify the partition table
i print information about a partition
Misc
m print this menu
x extra functionality (experts only)
Script
I load disk layout from sfdisk script file
O dump disk layout to sfdisk script file
Save & Exit
w write table to disk and exit
q quit without saving changes
Create a new label
g create a new empty GPT partition table
G create a new empty SGI (IRIX) partition table
o create a new empty DOS partition table
s create a new empty Sun partition table
Command (m for help): g
Created a new GPT disklabel (GUID: 4D12D92A-E17B-114E-8805-762CC6E5A690).
Command (m for help): n
Partition number (1-128, default 1): 1
First sector (2048-27344764894, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-27344764894, default 27344764894):
Created a new partition 1 of type 'Linux filesystem' and of size 12.7 TiB.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
```
Dopo aver partizionato anche `/dev/sdb`:
```bash
lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sda
`-sda1
sdb
`-sdb1
mmcblk0
|-mmcblk0p1 vfat FAT32 bootfs 37CA-39EC 224.3M 12% /boot
`-mmcblk0p2 ext4 1.0 rootfs a4af13c6-d165-4cbd-a9f6-c961fef8255d 54.4G 3% /
```
## Formattare il disco
Assicurarsi che entrambi i dispositivi siano smontati:
```bash
umount /dev/sda
umount: /dev/sda: not mounted.
umount /dev/sdb
umount: /dev/sdb: not mounted.
```
Quindi formattarli in `ext4`:
```bash
mkfs.ext4 -L "NAS1" /dev/sda1 -v
mke2fs 1.46.2 (28-Feb-2021)
fs_types for mke2fs.conf resolution: 'ext4', 'big'
Filesystem label=NAS1
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
427261952 inodes, 3418095355 blocks
170904767 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
104312 block groups
32768 blocks per group, 32768 fragments per group
4096 inodes per group
Filesystem UUID: 95db731d-5687-4681-bdac-b0d57dea0260
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544, 1934917632,
2560000000
Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done
```
### Verificare la formattazione
```bash
file -sL /dev/sda1
/dev/sda1: Linux rev 1.0 ext4 filesystem data, UUID=95db731d-5687-4681-bdac-b0d57dea0260, volume name "NAS1" (extents) (64bit) (large files) (huge files)
file -sL /dev/sdb1
/dev/sdb1: Linux rev 1.0 ext4 filesystem data, UUID=c2ccecd7-5ce2-4441-a134-f8d293831aea, volume name "NAS2" (extents) (64bit) (large files) (huge files)
```
## fstab
Creare i punti di mount nella cartella `/srv/`:
```bash
root@iron:/# cd /srv/
root@iron:/srv# mkdir private/
root@iron:/srv# mkdir public/
```
Procedere quindi a modificare il file fstab:
```bash
root@iron:/media# cat /etc/fstab
proc /proc proc defaults 0 0
PARTUUID=be140fba-01 /boot vfat defaults 0 2
PARTUUID=be140fba-02 / ext4 defaults,noatime 0 1
# I due dischi
UUID=95db731d-5687-4681-bdac-b0d57dea0260 /srv/private/ ext4 defaults 0 2
UUID=c2ccecd7-5ce2-4441-a134-f8d293831aea /srv/public/ ext4 defaults 0 2
```
Se, provando a montare i dischi non vengono restituiti errori, la procedura è avvenuta correttamente e i dischi verranno montati automaticamente all'avvio:
```bash
root@iron:/media# mount /srv/private/
root@iron:/media# mount /srv/public/
root@iron:/media# lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sda
`-sda1 ext4 1.0 NAS1 95db731d-5687-4681-bdac-b0d57dea0260 12T 0% /srv/private
sdb
`-sdb1 ext4 1.0 NAS2 c2ccecd7-5ce2-4441-a134-f8d293831aea 12T 0% /srv/public
mmcblk0
|-mmcblk0p1 vfat FAT32 bootfs 37CA-39EC 224.3M 12% /boot
`-mmcblk0p2 ext4 1.0 rootfs a4af13c6-d165-4cbd-a9f6-c961fef8255d 54.4G 3% /
root@iron:/media# mount -t ext4
/dev/mmcblk0p2 on / type ext4 (rw,noatime)
/dev/sda1 on /srv/private type ext4 (rw,relatime)
/dev/sdb1 on /srv/public type ext4 (rw,relatime)
```
## Configurazione di samba
Installare i seguenti paccchetti:
```bash
root@iron:/media# apt install samba samba-common-bin cifs-utils
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
cifs-utils is already the newest version (2:6.11-3.1+deb11u1).
The following additional packages will be installed:
attr ibverbs-providers libavahi-client3 libboost-iostreams1.74.0 libboost-thread1.74.0 libcephfs2 libcups2
libgfapi0 libgfrpc0 libgfxdr0 libglusterfs0 libibverbs1 libldb2 librados2 librdmacm1 libtdb1 liburing1
python3-cffi-backend python3-cryptography python3-dnspython python3-gpg python3-ldb python3-markdown
python3-pygments python3-requests-toolbelt python3-samba python3-talloc python3-tdb python3-yaml samba-common
samba-dsdb-modules samba-libs samba-vfs-modules tdb-tools
Suggested packages:
cups-common python-cryptography-doc python3-cryptography-vectors python3-sniffio python3-trio python-markdown-doc
python-pygments-doc ttf-bitstream-vera bind9 bind9utils ctdb ldb-tools ntp | chrony smbldap-tools ufw winbind
heimdal-clients
The following NEW packages will be installed:
attr ibverbs-providers libavahi-client3 libboost-iostreams1.74.0 libboost-thread1.74.0 libcephfs2 libcups2
libgfapi0 libgfrpc0 libgfxdr0 libglusterfs0 libibverbs1 libldb2 librados2 librdmacm1 libtdb1 liburing1
python3-cffi-backend python3-cryptography python3-dnspython python3-gpg python3-ldb python3-markdown
python3-pygments python3-requests-toolbelt python3-samba python3-talloc python3-tdb python3-yaml samba
samba-common samba-common-bin samba-dsdb-modules samba-libs samba-vfs-modules tdb-tools
0 upgraded, 36 newly installed, 0 to remove and 0 not upgraded.
Need to get 29.6 MB of archives.
After this operation, 113 MB of additional disk space will be used.
Do you want to continue? [Y/n]
```
### Global section
In `/etc/samba/smb.conf` aggiungere:
```bash
[global]
#allow hosts = 192.168.1.0/24
workgroup = WORKGROUP
security = USER
server string = FILE SERVER
create mask = 0755
browsable = no
```
### Share section
```bash
[private]
comment = Cartella condivisa
path = /srv/private
browsable = no
read only = no
writable = yes
guest ok = no
create mask = 0775
valid users = @samba
```
Verificare che la configurazione sia corretta col comando:
```bash
testparm
```
Quindi riavviare i servizi:
```bash
systemctl restart smbd.service
systemctl restart nmbd.service
# oppure
systemctl restart smbd nmbd
```
### Aggiunta utente
```bash
adduser davide --home=/home/public --shell=/bin/false --disabled-password
Adding user `davide' ...
Adding new group `davide' (1001) ...
Adding new user `davide' (1001) with group `davide' ...
Creating home directory `/home/public' ...
Copying files from `/etc/skel' ...
Changing the user information for davide
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]
```
#### Assegnare una password all'utente
```bash
smbpasswd -a davide
New SMB password:
Retype new SMB password:
Added user davide.
```
### Aggiungere l'utente al gruppo samba
```bash
usermod -aG samba utente
```
#### Assegnare la cartella condivisa all'utente
```bash
chown davide:samba /srv/private/
chmod -R 770 /srv/private/
ls -lh1 /srv/private/
total 20K
drwxrwx--- 2 davide davide 4.0K Mar 26 17:46 files
```
## Montare automaticamente la cartella condivisa
Installare sul client i seguenti pacchetti:
```bash
sudo apt-get install cifs-utils smb4k
```
Creare nella propria home un file `.smbcredentials` coi seguenti dati:
```bash
username=shareuser
password=sharepassword
domain=workgroupname
```
Quindi `chmod 0600 ~/.smbcredentials`.
Modificare il file `/etc/fstab` nel seguente modo:
```bash
cat /etc/fstab
#
# <file system> <mount point> <type> <options> <dump> <pass>
//192.168.1.107/private/ /media/davide/samba cifs credentials=/home/davide/.smbcredentials,uid=davide,gid=davide 0 0
```
Infine dare il comando `sudo mount -a`. La cartella dovrebbe essere correttamente montata.
```bash
sudo mount -a
mount: (hint) your fstab has been modified, but systemd still uses
the old version; use 'systemctl daemon-reload' to reload.
```
### Connettersi tramite file manager
Inserire nel path:
```bash
smb://server/share_folder/
smb://192.168.1.107/private/
```
## Collegamenti
- [https://linuxhint.com/raspberry_pi_static_ip_setup/](https://linuxhint.com/raspberry_pi_static_ip_setup/)
- [https://askubuntu.com/questions/157128/proper-fstab-entry-to-mount-a-samba-share-on-boot](https://askubuntu.com/questions/157128/proper-fstab-entry-to-mount-a-samba-share-on-boot)
- [https://noviello.it/come-installare-e-configurare-samba-server-su-ubuntu-18-04-lts/](https://noviello.it/come-installare-e-configurare-samba-server-su-ubuntu-18-04-lts/)
- [https://www.howtogeek.com/50787/add-a-user-to-a-group-or-second-group-on-linux/](https://www.howtogeek.com/50787/add-a-user-to-a-group-or-second-group-on-linux/)