Acces en ecriture au dossier config de HA depuis vscodeserver sous docker

Bonjour à tous,

Je cherche avoir l’accès en écriture du dossier config de HA depuis une autre instance avec code serveur d’installé en docker.

Architecture :
HA sous VM proxmox installé via le script avec Samba share installé (via module complémentaire) et autorisation de mon masque reseau 192.168.10.0/16
VScode server (linuxserver) installé en docker dans une autre VM.

version: "2.1"
services:
  openvscode-server:
    image: lscr.io/linuxserver/openvscode-server:latest
    container_name: code-server
    environment:
      - PUID=$PUID #mon user
      - PGID=$PGID # groupe root
      - TZ=$TZ
#      - CONNECTION_TOKEN= #optional
#      - CONNECTION_SECRET= #optional
      - SUDO_PASSWORD=password #optional
#      - SUDO_PASSWORD_HASH= #optional
    volumes:
      - ${PATH_FOLDER}/vscode/config:/config
      - ha_prod_config2:/ha_prod

    ports:
      - 3000:3000
    restart: unless-stopped

volumes:
  ha_prod_config:
    driver_opts:
      type: cifs
      o: "username=${SMBUSER},password=${SMBPASSWORD}"
      device: "//${IP_HA}/config"

Quand j’ouvre le dossier ha_prod depuis VS code, je vois et peux éditer les fichiers, mais pas les sauvegarder.

Voici l’erreur :

Failed to save 'configuration.yaml': Unable to write file 'vscode-remote://ndd.fr/ha_prod/configuration.yaml' (NoPermissions (FileSystemError): Error: EACCES: permission denied, open '/ha_prod/configuration.yaml')

Je vois bien que c’est un problème de permission, mais j’utilise bien les bons accès vu que je vois les fichiers.

Avez-vous une idée ?

Merci d’avance.

Les droits d’accès des fichiers sous linux sont découpés en trois niveaux user, group, other. Et pour chaque niveau 3 type de droit r(ead), w(rite), x (execute).
Au total les droits des fichiers et des répertoires sont de la forme (par exemple) rwx,rw_,rw_
Autrement dit le user peut lire/écrire/exécuter. Le groupe seulement lire et écrire (mais pas exécuter), autres idem.
Là, ton partage samba utilise le user X, ton container le user Y (qui n’est pas forcément dans le même groupe que X :wink: ) et Y n’a pas les droits d’écriture mais seulement de lecture.

Pour « arranger » les choses, ce qui est important ce n’est pas le nom X (mcfly) mais le UID (User ID) et le GID (Group ID) du côté samba et du côté vscode.

Le plus simple (!), c’est d’utiliser le même uid et gid partout et les droits par défaut (un user peut lire et écrire ses fichiers) vont faire en sorte que ça marche.

PS: J’ai simplifié un tantinet les histoires de droits, que les puristes me pardonnent.

Salut,

merci pour ta reponse.

j’ai bien mis le puid et le guid, malheureusement, ils ne sont pas sur la meme instance donc pas user commun.

je vais verifier les histoires de chmod.

merci encore.

Petite question, si j’accede au partage samba avec l’user créé, il devrait m’autoriser l’écriture ? ou c’est peut etre parce que je map le volule sur un dossier ?

j’ai essayé en ajoutant :rw a la fin du mappage de volume mais ne change rien.

merci encore

La méthode goret consiste à faire un chmod 0777 sur tout le répertoire. Mais, c’est très sale.

Il faudrait avoir le uid/gid du user smbuser. Et utiliser ça dans le container vscode.

Je n’utilise pas cette config. Il y a un empilement de droits pas forcément faciles à gérer…

L’autre option, consiste à utiliser vscode sur ton PC (sans le server) et tu montes le répertoire HA sur ton PC. Ca marche sans trop de problème…

Oui mais je ne comprend pas se besoin sur les droits car si ca marche sur mon PC ca devraut marcher sur mon serveur local.

je vais regarder les drouts actuels et voir (tenter le 777 pour voir si ca marche

Pas tout à fait… Tu montes sur le container vscode le répertoire avec le bon user/pwd. Mais, ensuite, quand tu utilises le container, les actions que tu y réalises s’exécutent avec les droits de l’utilisateur PUID/PGID. C’est ça la deuxième couche dont je parle.
Si je comprends correctement la situation, ton répertoire est bien monté (avec le smbuser, ça marche). Mais, l’édition se fait avec les droits du user PUID qui lui peut ne pas avoir les droits d’écriture sur le répertoire.

1 « J'aime »

Et en modifiant :

En y ajoutant les attributs uid, gid, dir_mode et file_mod, un peu dans ce genre là :

uid=${PUID},gid=${PGID},dir_mode=0755,file_mode=0755

Après j’ai jamais tenté l’expérience de monter du smb dans un container comme tu cherches à le faire :upside_down_face:

1 « J'aime »

peur etre, je vais refaire dzs essais ce soir, la les mioches sont arrivés