# 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 # # //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/)