“chmod g + w” não está funcionando: adicionando permissões em um NAS a um grupo usando file_mode e dir_mode no fstab (Ubuntu 16.04.4 LTS)

3

Antecedentes

Sou um usuário apaixonado do PLEX Media Server ("PMS"). Eu estava executando o PMS e o uTorrent em um Mac Mini no meu quarto. A mídia descarregada do uTorrent da Internet para um NAS WDMyCloud de 2Tb ("NAS") em minha LAN e PMS em casa transmitia mídia do NAS para os clientes na LAN doméstica e na Internet. Tudo funcionou muito bem.

Eu queria reduzir o ruído, adicionar mais espaço de armazenamento e organizar as coisas de forma a ter uma pegada de energia mais leve (um Raspberry PI 3 não era suficiente). Por isso, reciclei um portátil i5 SONY Vaio mais antigo (mas ainda não velho) (o "SONY") e um disco rígido USB de 1,5 TB.

Então, agora estou usando:

  1. A SONY está executando o mal-humorado Ubuntu Core 16.04.4 LTS, totalmente atualizado e atualizado em 2 de março de 2018, como segue:

    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
    

Ele é executado sem cabeça, sem qualquer GUI. Eu ssh para ele, conforme necessário, através da minha LAN com fio (sem wi-fi).

  1. My 2Tb WDMyCloud NAS, executando o Debian da seguinte forma:

    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. Meu disco rígido USB de 1,5 TB mais antigo que aparece como "Story_1_5Tb_2" ("STORY"). Ele está conectado ao NAS, o que, consequentemente, mostra o seguinte:

    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
    

Situação atual

Na SONY, existem os seguintes usuários:

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

Esses usuários foram adicionados ao grupo mediaserver .

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

O armazenamento nativamente no NAS (WDMyDrive) e no disco rígido USB de 1.5Tb (Story_1_5Tb_2) foi montado da seguinte forma:

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]

O /etc/fstab da SONY é o seguinte:

  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
  • Eu atribuí propriedade dos compartilhamentos a uid=plex para que o PMS pudesse operar no NAS e na HISTÓRIA
  • Eu permiti gid=mediaserver para que stefano,plex,debian-transmission,daemon,nobody também pudesse operar
  • O mesmo motivo por trás da opção de especificar rw (ler e gravar) como uma opção de montagem

O compartilhamento WDMyCloud (montado em /home/plex/WDMyCloud ) corresponde a uma pasta Public no NAS, da seguinte forma:

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

O que funciona

  1. Luz como uma pena, o núcleo do Ubuntu voa como um foguete no meu 4-yo SONY i5.
  2. A execução em um SO privado de todos não é necessária, o PMS transcodifica e transmite como um encanto. Ele reconheceu perfeitamente os compartilhamentos de rede (tanto o NAS quanto o STORY) e é capaz de operá-los. Quando necessário, ele é capaz de mover, adicionar e excluir arquivos, independentemente de onde eu acessar sua interface da web.
  3. A rede também é ótima e o PMS transmite para a Internet e fora da minha LAN doméstica.
  4. Transmissão instalada, o daemon inicia na inicialização e a interface da web é acessível: a partir da interface da web, posso carregar torrents e links magnéticos. Enquanto os carrego, a Transmission acessa a internet e tenta fazer o download.

Ótimo, mas ...

O que não funciona

De alguma forma, não consegui deixar a Transmission escrever na HISTÓRIA.

... então:

  1. O daemon do Trasmission lança
  2. a interface da web é acessível a partir da LAN doméstica (sem necessidade de abrir outras portas no meu roteador, por enquanto) e
  3. posso adicionar torrents, mas ...

... torrents NÃO serão baixados, por causa de uma " Permissão negada ".

Aparentemente, o usuário debian-transmission (suponho que ele é o cara) não tem permissão para escrever na HISTÓRIA.

O que eu tentei

  1. chmod simbólico - > sem sucesso

    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 - > sem sucesso

    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. Eu até tentei setuid - Eu pensei que talvez se a Transmission pudesse ler e executar um arquivo na STORY ele também poderia escrever e deletar se o arquivo tivesse privilégios de proprietário. Foi um tiro longo e, claro ... não funcionou .

    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. Então eu li que poderia ser o sistema de arquivos ntfs do STORY montado com o cifs. Como eu aprendi, aparentemente o Linux geralmente só lê a partir dos sistemas de arquivos ntfs e o ntfs-3g é necessário.

Outra chance, porque eu posso escrever em um sistema de arquivos ntfs ou não. No meu caso, uid=plex pode escrever, mas os membros de gid=mediaserver não podem: isso é estranho.

Mas removi a linha Story_1_5Tb_2 de /etc/fstab e tentou ntfs-3g - > sem sucesso.

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

Como o local não mudou, talvez o rtfs-3g não reconheça montagens de rede?

Por que o chmod não está funcionando? ... e por que a montagem com -o gid=mediaserver,rw não está funcionando?

A unidade STORY é um disco rígido USB, formatado para NTFS e conectado ao NAS. Eu posso acessá-lo e uid=plex como seu dono tem tudo: ler, executar e escrever. Tudo está conectado dentro de uma LAN com fio (cabeada, não wifi). Eu realmente preciso ser capaz de permitir que Transmission ("uid = debian-transmission") escreva no drive STORY.

O problema é que o uTorrent instalado no Mac Mini no meu quarto ainda pode acessar a HISTÓRIA - por que não a transmissão na SONY? O que estou fazendo errado?

    
por Stefano A 02.03.2018 / 17:55

1 resposta

2

Mudei meu etc / fstab para que ele montasse o compartilhamento de rede da seguinte forma:

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

Em particular, adicionei as seguintes opções à string:

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

Isso deu permissões completas de leitura, gravação e execução no compartilhamento de rede aos membros do grupo "uid = mediaserver". "Uid = plex" já tinha todas essas permissões, mesmo antes das modificações; Eu escolhi não conceder permissão a "o" usuários.

Agora, se eu ls -l a pasta em que montei minha HISTÓRIA, obtenho:

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

Consequentemente, Transmission (membro do grupo "uid = mediaserver") economiza seus downloads: final feliz!

Agora, enquanto eu vejo o que essas opções fazem (os valores "absolutos" são idênticos a chmod , o que torna a coisa toda praticamente auto-explicativa), eu não entendo porque o que eu fiz mais cedo (definindo uid e gid) não foi suficiente / correto, nem entendo porque executar chmod com privilégios sudo não faria nada para resolver o problema. Na verdade, a similaridade desta opção ao chmode faz com que pareça algum tipo de chmod executado no mount, então por que um chmod executado posteriormente não resolve?

    
por Stefano A 03.03.2018 / 17:54