Ne pas conserver permissions, propriétaire et groupe avec MV

Bonjour,

Le sujet du topic est un peu flou. Je m’explique…

J’ai créé un partage SMB avec Samba. Il me permet de partager un répertoire appartenant à root:sambagrp de permissions 2775 (setgid et écriture pour le groupe).

ls -ld /srv/samba/blabla
drwxrwsr-x 8 root sambagrp 4,0K 10 févr. 12:22 blabla

Seuls les membres du groupe sont autorisés à se connecter au partage que j’ai configuré de la façon suivante :

[code][partage]

comment = blabla
browseable = yes
path = /srv/samba/blabla
read only = no
create mask = 0664
force create mode = 0664
directory mask = 2775
force directory mode = 2775
valid users = +sambagrp[/code]

Cela fonctionne « bien ». Seuls les membres du groupe peuvent s’y connecter. La lecture est autorisée, l’écriture également. Les droits des nouveaux fichiers sont bien 0664 et ceux des répertoires sont bien 2775. Le setgid joue son rôle et les nouveaux fichiers appartiennent au groupe sambagrp et ont pour propriétaire le membre du groupe qui l’a créé. En supposant user1 et user2 membres du groupe sambagrp : l’un peut écrire un fichier et l’autre modifier ce même fichier sans aucun problème (ce qui est l’effet désiré).

Corrigez-moi si je me trompe mais j’ai compris, à la lecture du man smb.conf(8) que « create mask » et « directory mask » permettent d’empêcher des droits supérieurs (un masque inversé en somme) tandis que « force create mode » et « force directory mode » permettent de confier au minimum les droits indiqués. En choisissant des valeurs identiques, j’espérais que les droits soient toujours les mêmes…

Mon problème :

Une fois le partage monté, tout se passe comme je viens de le décrire si je fais :

touch /media/mon_partage/test

# puis sur le serveur
ls -l /srv/samba/blabla/test
-rw-rw-r-- 1 user1 sambagrp 0 10 févr. 12:33 test

Par contre, les droits ne sont pas conservés et le setgid ne remplit pas son rôle si le fichier est déjà créé et que je le déplace :

touch /home/user1/test
mv /home/user1/test /media/mon_partage/
mv: préserve les permissions pour « /media/mon_partage/test »: Permission non accordée

# puis sur le serveur
ls -l /srv/samba/blabla/test
-rw-r--r-- 1 user1 user1 0 10 févr. 12:33 test
# Il manque le droit d'écriture pour le groupe et le groupe est mauvais...

L’erreur qui s’affiche est pénible car elle empêche la suppression de du fichier source alors que le déplacement a bien eu lieu. Qui plus est, elle indique que les permissions ne peuvent être conservées alors qu’elles le sont… Et c’est justement mon problème. J’ai l’impression que mon paramétrage fait office de consigne pour la création d’un nouveau fichier mais n’empêche en rien de sortir du passage protégé lorsqu’on déplace des fichiers. J’en profite pour signaler que, côté client, je peux tout à fait faire un chmod 777 sur un fichier et ça ne pose aucun problème. J’aimerais assez l’interdire. Disons que c’est la question bonus de mon topic ^^ Il me semble que c’est le même problème mais les chmod de mes utilisateurs arrivent moins souvent que les couper/coller vers le partage.

Avez-vous une idée sur la nature de mon problème et sur la façon d’y remédier ? Merci d’avance !

Je précise que je monte le partage via cette ligne fstab :

//nom_du_serveur/partage /media/mon_partage cifs _netdev,user,noperm,credentials=/home/user1/.smbcredentials 0 0

user (s), ptet ?

Tu veux dire dans les options de montage ? Si oui, ce n’est pas ça :confused: Par contre, mon utilisateur pouvait monter le partage mais pas le démonter (avec l’option « user »). Ce désagrément disparaît avec l’option « users ». Je ne sais d’ailleurs pas pourquoi le démontage n’est pas permis dans le premier cas car si j’en crois le manuel mount(8), l’option « user » devrait suffire.

Enfin en tout cas, cela n’aide pas à la gestion des droits. La commande « mv » retourne toujours la même erreur et à l’arrivée, le fichier a les mêmes droits, propriétaire et groupe que lorsqu’il était sur le système de fichier local.

Une autre idée ?

Hello,

Ne serait-ce pas un problème de système de fichiers qui est monté via Samba ?
Si c’est du NTFS, les fichiers perdront leurs droits et leurs propriétés.

LeDub qui se souvient l’achat d’un disque ethernet formaté en NTFS inutilisable pour lui !!!

Bonjour LeDub et merci pour ton aide.

[quote=“LeDub”]Hello,
Ne serait-ce pas un problème de système de fichiers qui est monté via Samba ?
Si c’est du NTFS, les fichiers perdront leurs droits et leurs propriétés.
[/quote]

Malheureusement, j’en doute :

[ul]
[li] répertoire partagé (côté serveur) : sur une partition ext4 montée sur /srv[/li]
[li] répertoire contenant le fichier que je déplace vers le partage (donc côté client) : sur une partition ext4 montée sur /home[/li][/ul]

D’ailleurs, pour mieux expliquer mon problème, le pépin est justement que les permissions du fichier d’origine sont gardées alors que je voudrais forcer les droits, propriétaire et groupe de chaque fichier et chaque répertoire sur le partage.

Autre piste :

Je suis en train de lire cette page. Il semblerait que la personne ait des difficultés similaires aux miennes et le débat s’oriente vers le paramétrage “unix permissions” que je connais mal. Cela mérite sûrement quelques tests.

Je ne suis pas sûr que mv seul permette ce que tu cherches à faire.
Par contre, un alias utilisant cp et rm devrait te le permettre via les options de cp.

[quote=“vv222”]Je ne suis pas sûr que mv seul permette ce que tu cherches à faire.
Par contre, un alias utilisant cp et rm devrait te le permettre via les options de cp.[/quote]

Je ne pense pas que mv soit mon problème. J’en ai parlé parce que c’est en déplaçant mon fichier depuis mon système local que je rencontre le problème mais il s’agit bien d’une question autour de Samba et de la gestion des permissions.

D’ailleurs, c’est normal que la commande mv garde les droits et le propriétaire du fichier. Cela ne me choque pas du tout. Ce que je cherche à faire, c’est forcer les droits sur le partage même pour un fichier que j’y déplace via la commande mv (dont la préservation des droits me gêne). D’ailleurs, un simple chmod/chown côté client me sort de l’embarras mais ne résout pas mon problème : je veux vraiment empêcher tout autre droit, propriétaire et groupe que ce que j’ai décidé sur le partage.

Personne n’a jamais mis au point de partage samba avec écriture pour le groupe ? C’est un cas de figure qui me paraît extrêmement courant pourtant :confused: La seule difficulté, c’est que je cherche à le faire “proprement”, c’est-à-dire avec un groupe sur le serveur auquel j’ajoute les utilisateurs autorisés (plutôt qu’un utilisateur créé pour l’occasion et dont le mot de passe est donné à tout le monde, comme c’est souvent fait si j’en crois les différents tutoriels sur le web…).

Voici mon paramétrage Samba « global » :

[global]

    workgroup = WORKGROUP
    server string = %h server
    dns proxy = no
    log file = /var/log/samba/log.%m
    max log size = 1000
    syslog = 0
    panic action = /usr/share/samba/panic-action %d
    encrypt passwords = true
    passdb backend = tdbsam
    obey pam restrictions = yes
    unix password sync = yes
    passwd program = /usr/bin/passwd %u
    passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
    pam password change = yes

Apparemment, c’est vraiment impossible de forcer proprement les droits…

Il y a donc deux solutions :
[ul]
[li] Le faire via un cron qui répare les droits de temps en temps (absolument horrible) ou via libnotify (presque aussi horrible) ;[/li]
[li] Désactiver le paramètre global « unix extensions » de Samba (pas mal horrible aussi…).[/li][/ul]

J’ai testé la deuxième méthode qui fonctionne bien. Je sais pas si je vais maintenir le paramètre pour autant :confused: