web-dev-qa-db-fra.com

"chmod g + w" ne fonctionne pas: ajout d'autorisations sur un NAS à un groupe à l'aide de file_mode et dir_mode dans fstab (Ubuntu 16.04.4 LTS)

Contexte

Je suis un utilisateur passionné du serveur multimédia PLEX ("PMS"). Je courais à la fois PMS et uTorrent sur un Mac Mini dans ma chambre. uTorrent a téléchargé un contenu multimédia d’Internet sur un réseau 2 To WDMyCloud NAS ("NAS") sur mon réseau local et le système de gestion de la chaîne PMS transmettrait le contenu multimédia du NAS aux clients situés sur mon réseau local et sur le réseau. l'Internet. Tout a très bien fonctionné.

Je voulais réduire le bruit, ajouter de l'espace de stockage supplémentaire et organiser les choses de manière à réduire l'empreinte énergétique (un Raspberry Pi 3 ne suffisait pas). J'ai donc recyclé un ordinateur portable SONY Vaio i5 (le "SONY") plus ancien (mais pas encore ancien) et un disque dur USB de 1,5 To.

Alors maintenant, j'utilise:

  1. Le SONY exécutant Snappy Ubuntu Core 16.04.4 LTS, entièrement mis à jour et mis à niveau au 2 mars 2018, comme suit:

    stefano@SONY:/$ uname -a
    Linux SONY 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
    

Il fonctionne sans tête, sans interface graphique. Je ssh dedans au besoin par mon réseau local câblé (pas de wifi).

  1. Mon NAS WDMyCloud 2 To, exécutant Debian comme suit:

    WDMyCloud:/dev# uname -a
    Linux WDMyCloud 3.2.26 #1 SMP Thu Jul 9 11:14:15 PDT 2015 wd-2.4-rel armv7l GNU/Linux
    
  2. Mon disque dur USB encore plus ancien de 1,5 To, qui affiche "Story_1_5Tb_2" ("STORY"). Il est branché sur le NAS, ce qui indique par conséquent:

    WDMyCloud:/dev# lsblk -f        
    NAME    FSTYPE            LABEL       MOUNTPOINT
    sda                                   
    |-sda1  linux_raid_member             
    | `-md1 ext3                          /
    |-sda2  linux_raid_member             
    | `-md1 ext3                          /
    |-sda3  swap                          [SWAP]
    |-sda4  ext4                          /DataVolume
    |-sda5                                
    |-sda6                                
    |-sda7                                
    `-sda8                                
    sdb                                   
    `-sdb1  ntfs              Story 1.5Tb /var/media/Story_1_5Tb_2
    

Situation actuelle

Sur le SONY, les utilisateurs suivants existent:

stefano@SONY:/home/plex$ cut -d: -f1 /etc/passwd
root
daemon
[...]
nobody
[...]
stefano
plex
debian-transmission

Ces utilisateurs ont été ajoutés au groupe mediaserver.

stefano@SONY:/home/plex$ getent group mediaserver | awk -F: '{print $4}'
stefano,plex,debian-transmission,daemon,nobody

Le stockage en mode natif sur NAS (WDMyDrive) et le disque dur USB 1,5 To (Story_1_5Tb_2) ont été montés comme suit:

stefano@SONY:/home/plex$ ls -l
total 0
drwxr-xr-x 2 plex mediaserver 0 Mar  2 12:00 story
drwxr-xr-x 2 plex mediaserver 0 Mar  2 10:50 WDMyCloud

stefano@SONY:/home/plex$ ls -l story
total 0
drwxr-xr-x 2 plex mediaserver 0 Mar  1 13:40 Shared [A]
drwxr-xr-x 2 plex mediaserver 0 Mar  1 13:40 Shared [B]
drwxr-xr-x 2 plex mediaserver 0 Feb 25 23:02 System Volume Information
-rwxr-xr-x 1 plex mediaserver 0 Feb 28 06:49 temp.ts
drwxr-xr-x 2 plex mediaserver 0 Mar  2 09:49 Shared [C]
drwxr-xr-x 2 plex mediaserver 0 Mar  1 18:19 Shared [D]

stefano@SONY:/home/plex$ ls -l WDMyCloud
total 0
drwxr-xr-x 2 plex mediaserver 0 Feb 24 09:19 Shared [E]
drwxr-xr-x 2 plex mediaserver 0 Feb 21 12:32 Shared [F]
drwxr-xr-x 2 plex mediaserver 0 Feb 21 12:29 Shared [G]
drwxr-xr-x 2 plex mediaserver 0 Nov 20  2016 Shared [H]
[other shares]

Le /etc/fstab du SONY se présente comme suit:

  GNU nano 2.5.3              File: /etc/fstab                                  

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sdb1 during installation
UUID=6e54f9e7-5579-437b-9e7d-5f76b3fe146e /               ext4    errors=remount-ro 0       1
# swap was on /dev/sdb5 during installation
UUID=59f57e49-82e9-4be3-b53a-1a65c0e771ae none            swap    sw              0       0


# These are the mounts needed to let PLEX find the media shared in WDMyCloud and Story_1.5Tb
#
//WDMyCloud/Public /home/plex/WDMyCloud cifs _netdev,uid=plex,gid=mediaserver,rw,guest 0
#
//WDMyCloud/Story_1_5Tb_2 /home/plex/story cifs _netdev,uid=plex,gid=mediaserver,rw,guest 0
  • J'ai assigné propriété des actions à uid=plex afin que PMS puisse fonctionner sur le NAS et sur le STORY.
  • I autorisé gid=mediaserver afin que stefano,plex,debian-transmission,daemon,nobody soit également autorisé à fonctionner
  • Même raison derrière le choix de spécifier rw (lecture & écriture) comme option de montage

Le partage WDMyCloud (monté dans /home/plex/WDMyCloud) correspond à un dossier Public sur le NAS, comme suit:

WDMyCloud:/DataVolume/shares# ls -l
total 32
drwxrwxrwx+ 12 root share 4096 Mar  2 10:50 Public
drwxrwxrwx+  2 root share 4096 Mar  8  2017 SmartWare
drwxrwxrwx+  2 root share 4096 Mar  2 10:39 Stefano
lrwxrwxrwx   1 root share    24 Mar  2 10:43 Story_1_5Tb_2 -> /var/media/Story_1_5Tb_2
drwxrwxrwx+  2 root share 4096 Mar  8  2017 TimeMachineBackup

Ce qui fonctionne

  1. Léger comme une plume, le noyau Ubuntu vole comme une fusée sur mon SONY i5 de 4 ans.
  2. Utiliser un système d'exploitation privé de tout n'est pas nécessaire, PMS transcode et diffuse comme un charme. Il a reconnu de manière transparente les partages réseau (à la fois le NAS et le STORY) et est capable de les exploiter. Au besoin, il est capable de déplacer, d’ajouter et de supprimer des fichiers, où que j’accède à son interface Web.
  3. Le réseau est également excellent et les flux PMS sur Internet et hors de mon réseau local.
  4. La transmission étant installée, le démon démarre au démarrage et l'interface Web est accessible: depuis l'interface Web, je peux charger des torrents et des liens magnétiques. Au fur et à mesure que je les charge, Transmission accède à Internet et tente de télécharger.

Génial, mais ...

Ce qui ne marche pas

D'une manière ou d'une autre, je n'ai pas pu laisser Transmission écrire sur l'HISTOIRE.

...alors:

  1. Lancement du démon de Trasmission
  2. l'interface Web est accessible depuis le réseau local domestique (pas besoin d'ouvrir d'autres portes sur mon routeur, pour le moment) et
  3. Je peux ajouter des torrents, mais ...

... les torrents NE téléchargeront PAS, à cause d'une " Permission refusée ".

Apparemment, l'utilisateur debian-transmission (je suppose qu'il est le mec) n'est pas autorisé à écrire sur l'HISTOIRE.

Ce que j'ai essayé

  1. chmod Symbolic -> en vain

    plex@SONY:/home/plex$ ls -l
    total 0
    drwxr-xr-x 2 plex mediaserver 0 Mar  2 12:00 story
    drwxr-xr-x 2 plex mediaserver 0 Mar  2 10:50 WDMyCloud
    
    plex@SONY:/home/plex$ ls -l /home/plex/story
    total 0
    drwxr-xr-x 2 plex mediaserver 0 Mar  1 13:40 Shared [A]
    drwxr-xr-x 2 plex mediaserver 0 Mar  1 13:40 Shared [B]
    drwxr-xr-x 2 plex mediaserver 0 Feb 25 23:02 System Volume Information
    -rwxr-xr-x 1 plex mediaserver 0 Feb 28 06:49 temp.ts
    drwxr-xr-x 2 plex mediaserver 0 Mar  2 09:49 Shared [C]
    drwxr-xr-x 2 plex mediaserver 0 Mar  1 18:19 Shared [D]
    
    plex@SONY:/home/plex$ Sudo chmod -R g+w /home/plex/story
    [Sudo] password for plex: 
    
    plex@SONY:/home/plex$ ls -l
    total 0
    drwxr-xr-x 2 plex mediaserver 0 Mar  2 12:00 story
    drwxr-xr-x 2 plex mediaserver 0 Mar  2 10:50 WDMyCloud
    
    plex@SONY:/home/plex$ ls -l /home/plex/story
    total 0
    drwxr-xr-x 2 plex mediaserver 0 Mar  1 13:40 Shared [A]
    drwxr-xr-x 2 plex mediaserver 0 Mar  1 13:40 Shared [B]
    drwxr-xr-x 2 plex mediaserver 0 Feb 25 23:02 System Volume Information
    -rwxr-xr-x 1 plex mediaserver 0 Feb 28 06:49 temp.ts
    drwxr-xr-x 2 plex mediaserver 0 Mar  2 09:49 Shared [C]
    drwxr-xr-x 2 plex mediaserver 0 Mar  1 18:19 Shared [D]
    
  2. chmod Absolute -> en vain

    plex@SONY:/home/plex$ Sudo chmod -R 0770 /home/plex/story
    
    plex@SONY:/home/plex$ ls -l
    total 0
    drwxr-xr-x 2 plex mediaserver 0 Mar  2 12:00 story
    drwxr-xr-x 2 plex mediaserver 0 Mar  2 10:50 WDMyCloud
    
  3. J'ai même essayé de définir Setuid - je pensais que si Transmission pouvait lire et exécuter un fichier sur le STORY, il pourrait aussi l'écrire et le supprimer si le fichier dispose des privilèges du propriétaire. C'était un long coup et bien sûr ... ça n'a pas marché.

    plex@SONY:/home/plex$ Sudo chmod -R u+s /home/plex/story
    
    plex@SONY:/home/plex$ ls -l
    total 0
    drwxr-xr-x 2 plex mediaserver 0 Mar  2 12:00 story
    drwxr-xr-x 2 plex mediaserver 0 Mar  2 10:50 WDMyCloud
    
  4. Ensuite, j'ai lu que cela pourrait être le système de fichiers ntfs de l'HISTOIRE monté avec cifs. Comme je l'ai appris, apparemment, Linux ne peut généralement lire que depuis les systèmes de fichiers ntfs et ntfs-3g est requis.

Encore une fois, car je peux écrire ou non sur un système de fichiers NTFS. Dans mon cas, uid=plex peut écrire, mais les membres de gid=mediaserver ne le peuvent pas: c'est étrange.

Mais j'ai enlevé la ligne Story_1_5Tb_2 de /etc/fstab et essayé ntfs-3g -> en vain.

plex@SONY:/home/plex/story$ Sudo ntfs-3g //WDMyCloud/Story_1_5Tb_2 /home/plex/story
[Sudo] password for plex: 
ntfs-3g: Failed to access volume '//WDMyCloud/Story_1_5Tb_2': No such file or directory

ntfs-3g 2015.3.14AR.1 integrated Fuse 28 - Third Generation NTFS Driver
        Configuration type 7, XATTRS are on, POSIX ACLS are on

Copyright (C) 2005-2007 Yura Pakhuchiy
Copyright (C) 2006-2009 Szabolcs Szakacsits
Copyright (C) 2007-2015 Jean-Pierre Andre
Copyright (C) 2009 Erik Larsson

Usage:    ntfs-3g [-o option[,...]] <device|image_file> <mount_point>

Options:  ro (read-only mount), windows_names, uid=, gid=,
          umask=, fmask=, dmask=, streams_interface=.
          Please see the details in the manual (type: man ntfs-3g).

Example: ntfs-3g /dev/sda1 /mnt/windows

News, support and information:  http://tuxera.com

Puisque l'emplacement n'a pas changé, peut-être que rtfs-3g ne reconnaît pas les montages réseau?

Pourquoi chmod ne fonctionne pas? ... et pourquoi le montage avec -o gid=mediaserver,rw ne fonctionne pas non plus?

Le lecteur STORY est un disque dur USB, formaté en ntfs et branché sur le NAS. Je peux y accéder et uid=plex comme son propriétaire l’a tout: lecture, exécution et écriture. Tout est connecté dans un réseau local câblé (câblé, pas de wifi). J'ai vraiment besoin de pouvoir permettre à Transmission ("uid = debian-transmission") d'écrire sur le lecteur STORY.

Le truc, c’est que uTorrent installé sur le Mac Mini dans ma chambre peut toujours accéder à l’HISTOIRE - pourquoi pas la transmission sur le SONY? Qu'est-ce que je fais mal?

3
Stefano A

J'ai changé mon etc/fstab pour qu'il monte le partage réseau comme suit:

//WDMyCloud/Story_1_5Tb_2 /home/plex/story cifs _netdev,guest,uid=plex,gid=mediaserver,rw,iocharset=utf8,file_mode=0770,dir_mode=0770 0 0

En particulier, j'ai ajouté les options suivantes à la chaîne:

,iocharset=utf8,file_mode=0770,dir_mode=0770,

Cela donnait aux membres du groupe "uid = mediaserver" des autorisations de lecture, d'écriture et d'exécution complètes sur le partage réseau. "Uid = plex" disposait déjà de toutes ces autorisations avant même les modifications; J'ai choisi de ne donner aucune permission à "o" d'autres utilisateurs.

Maintenant, si je ls -l le dossier où j'ai monté mon histoire, je reçois:

drwxrwx--- 2 plex mediaserver 0 Mar 3 09:53 story

Par conséquent, Transmission (membre du groupe "uid = mediaserver") enregistre bien ses téléchargements: fin heureuse!

Maintenant, alors que je vois ce que font ces options (les valeurs "absolues" sont identiques à chmod , ce qui rend le tout assez explicite), Je ne comprends pas pourquoi ce que je faisais plus tôt (régler uid et gid) n'était pas suffisant/correct, je ne comprends pas non plus pourquoi exécuter chmod avec les privilèges Sudo serait ne rien faire pour résoudre le problème. En fait, la similitude de cette option avec chmode donne l’impression qu’il ressemble à une sorte de chmod exécuté lors du montage, alors pourquoi un ) chmod exécuté plus tard pas résolu?

2
Stefano A