Freebox Server (Ultra V9/ Pop V8/ Delta V7 / Revolution V6 / Mini 4K)

  • État Nouveau
  • Pourcentage achevé
    0%
  • Type Évolution
  • Catégorie Services locaux → SMB
  • Assignée à Personne
  • Système d'exploitation Freebox Server V7 (Delta)
  • Sévérité Critique
  • Priorité Très Basse
  • Basée sur la version 4.6.4
  • Due pour la version Non décidée
  • Échéance Non décidée
  • Votes
  • Privée

FS#37074 - Ajouter plus de possibilités sur le paramétrage du server Samba (autorisations et ACL)

Bonjour à tous,

Je souhaite faire tourner plusieurs services sous docker dans une VM (base de donnée mariadb, server web apache ..).
Souhaitant faire persister plusieurs volumes (chaque service) sur le point de montage samba de mon raid, chaque service a besoin d’avoir les droits de lire et écrire sur ce Raid.
Ne pouvant changer les droits des fichiers, dossiers et sous dossier de ce point de montage SMB (chown, chgrp, chmod) :

Je souhaiterai avoir plus de contrôle sur les paramètres du server Samba
External Link

N’imaginant pas Free laisser l’accès root aux fichiers de config sur Freebox OS :
/etc/samba/smb.conf
/var/lib/samba/usershares

Pouvez vous rajouter une option à l’interface GUI Freebox/ gestion des partages windows ?
Ne pas Hériter les ACL, Ne pas Hériter les autorisations pour laisser ainsi une plus grande flexibilité sur l’utilisation des partages Samba.

J’ai déjà essayer de jouer avec les règles de montage samba dans ma VM : UID et GID, file_mode et dir_mode, cela n’est pas viable.
Si en revanche vous avez une solution de contournement, je suis preneur :)
Merci et à bientôt !

loggoi a commenté le 30.09.2022 17:20

Pourquoi ne pas tout mettre dans votre vm en prévoyant une image disque plus grande ?

I share your desire, but I haven’t yet been able to discover a solution.

pou

nbanba a commenté le 11.10.2022 14:08

Bonjour

Je suis d’accord avec vous, une gestion plus fine du NAS serait bienvenue.
De mon côté, j’ai une grappe raid de 24T faite avec 4 SSD de 8T, et n’avoir qu’un seul share , un seul user, etc est très réducteur et n’a aucune fonctionnalités des NAS du marché autre que le raid.
Déjà, pour moi il faudrait :

- pouvoir faire des partitions sur la grappe RAID !
- pouvoir faire différents shares samba
- pouvoir avoir différents users samba
- et surout avoir du NFS

En attendant que Free fasse quelque-chose, et afin de vous dépanner (si ça match avec votre use case), voici la solution que j’utilise pour répondre à ce type de besoins :

Pour les VM, j’ai trouvé une méthode avec systemd pour monter des shares qui sont des fichiers cryptés posés sur le stockage samba. Ce sont en fait des images disques cryptées que je monte ensuite :
Dans la VM, je monte le share global et depuis ce share, je créé des périphériques “loop devices” à partir des fichiers cryptés, puis je monte ces devices normalement dans la VM
Pour des questions d’ordre d’execution des process, je ne peux pas utiliser /etc/fstab pour ces loop devices (alors que je l’utilise pour le montage du share samba) mais le service systemd créé pour le volume se charge de monter ou démonter le volume au bon moment dans les process de boot et de shutdown, notamment après que le share samba soit monté par /etc/fstab au démarrage et avant qu’il soit démonté au shutdown.

Pour être plus parlant, voici un exemple (désolé, c’est en anglais, j’écris toujours mes README en anglais):

#####################################################################################################
FULL EXAMPLE : create a crypted volume for camera videos storage on FreeboxDMZ server: $THIS-FSRV-02
#####################################################################################################

#Create 1TB diskfile on the Freeox SMB share from another SERVER which access Freebox SMB share 
#(filename contains a UNIQ LOOP ID on $THIS-NETWORK) :

dd if=/dev/urandom of=/mnt/smb/24T/FS-DMZ/camcrypt2047 iflag=fullblock bs=256M count=4096

#Format the diskfile (luks/btrfs): choose a passphrase, save it in a file of your choice

losetup loop2047 /mnt/smb/24T/FS-DMZ/camcrypt2047
losetup 
passphrase=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
echo $passphrase |cryptsetup luksFormat /dev/loop2047
echo $passphrase |cryptsetup luksOpen /dev/loop2047 camcrypt
mkfs -t btrfs /dev/mapper/fbxcamcrypt

#Done : the crypted btrfs diskfile /mnt/smb/24T/FS-DMZ/camcrypt2047 is ready

#Go on the target machine (here $THIS-FSRV-02) create (u)mount script and systemd service :

ssh root@$THIS-FSRV-02
mkdir -p /etc/fbx


# The SMB share from your Freebox need to be mounted and accessible in the VM (here the mountpoint is /mnt/smb/dmz)


# Mount script : 

cat /etc/fbx/autocamcrypt2047-m.sh 
#!/bin/bash

passphrase=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
loop_device=/dev/loop2047
dm_device=camcrypt
target=/mnt/smb/
diskfile=/mnt/smb/dmz/camcrypt2047

losetup $loop_device $diskfile 
echo $passphrase | cryptsetup luksOpen $loop_device $dm_device 
mkdir -p $target/$dm_device
mount /dev/mapper/$dm_device $target/$dm_device || exit 253
df -hPT $target/$dm_device
#--End-of-script---




# umount script
 
cat /etc/fbx/autocamcrypt2047-u.sh
#!/bin/bash

loop_device=/dev/loop2047
dm_device=camcrypt
target=/mnt/smb/

umount $target/$dm_device 
cryptsetup luksClose $dm_device 
losetup -d $loop_device  
#--End-of-script---


# set both scripts executables :

chmod 700 /etc/fbx/auto*.sh



# create systemd service file 

cat /etc/systemd/system/camcrypt2047-mount.service
[Unit]
Description=Mount / Umount encrypted loop disk present on network share 
After=mount.target network.target remote-fs.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/bash /etc/fbx/autocamcrypt2047-m.sh
ExecStop=/bin/bash /etc/fbx/autocamcrypt2047-u.sh

[Install]
WantedBy=multi-user.target
#--End-of-script---



#Enable systemd service and start/stop it
 
systemctl dameon-reload
systemctl enable camcrypt2047-mount.service
systemctl start camcrypt2047-mount.service
systemctl status camcrypt2047-mount.service
systemctl stop camcrypt2047-mount.service
df -hPT |grep camcrypt  

######################################################################################################################
END EXAMPLE : how to create and mount a crypted volume from Freebox SMB share on FreeboxDMZ VM server : $THIS-FSRV-02
######################################################################################################################




Voilà, le seule truc c’est que les performances ne sont pas celles que j’attends d’une grappe RAID SSD, les IO sont très correctes (plusieurs milliers d’IOPS) mais la bande passante est limité par la puissance du CPU ARM Snapdragon virtualisé dans la vm. C’est entre autre du au fait que je crypte le volume avec LUKS (Linux Unified Crypting System) et que j’empile les couches share samba, LUKS, btrfs, device-mapper, loop, le tout dans une VM qui tourne dans la freebox.

Pour le besoin décrit ici, aucun problèmes de performances, les caméras écrivent à moins de 100 mega bits par secondes en constant sur le volume.
Par contre, j’ai fait des tests avec d’autres volumes plus gros (4Tera) et j’ai essayé de stocker massivement des datas dedans, et sur une VM de la Freebox à 2 CPU + 4 giga de ram avec les buffers de samba à 16384 en r + w dans le fstab, j’ai environ 500 mega bits par secondes de débit constant en écriture (j’aurais aimé avoir 1,5giga), par contre c’est bien meilleur en lecture.

Cordialement
nbanba

Chargement...

Activer les raccourcis clavier

Liste des tâches

Détails de la tâche

Édition de la tâche