Completamente escondendo um dir, mas deixando seus descendentes acessíveis via symlinks, no Samba

0

Devido à maneira como o Samba manipula links simbólicos e links largos (ele só pode distinguir "dentro da raiz do compartilhamento" ou "fora da raiz do compartilhamento") Eu quero criar links simbólicos fixos na raiz do compartilhamento para os dirs "reais" e em seguida, evite que os diretórios "reais" sejam mostrados diretamente ao usuário quando eles navegarem no compartilhamento de rede, conforme mostrado.

Isso é possível?

ESTRUTURA REAL (servidor de arquivos do FreeBSD):

share_root
   --- data1
          --- data3
          --- data4
          --- data5
          --- data6
   --- data2
          --- data7
          --- data8
          --- data9
   --- d4 (=symlink to data4)
   --- d6 (=symlink to data6)
   --- d9 (=symlink to data9)

O QUE O USUÁRIO VER (cliente Windows):

share_root
   --- d4 (and all data4's subdirs)
   --- d6 (and all data6's subdirs)
   --- d9 (and all data9's subdirs)

   (note: actual access to any dir is controlled by ACLs on data1/data2
    and their subdirs, so this just cleans up the tree seen by a user
    when they browse the share; it doesn't create any security)

Essencialmente, as dirs "real" data1 / data2 contêm uma mistura de dirs que o usuário pode / não pode acessar, e esse acesso é imposto pelas ACLs.

Mas quando o usuário acessa o compartilhamento, eu quero que eles não vejam esses diretórios em primeiro lugar.

Os arquivos ocultos "normais" serão exibidos no Windows Explorer, por isso não posso usar "ocultar arquivos" ou arquivos de pontos para fazer isso. Eu poderia usar outros métodos, como arquivos de veto, enumeração de acesso controlado, leitura / passagem de ACL e assim por diante, se eles ajudarem. No entanto, eu só quero impedir que dados1 / dados2 sejam mostrados diretamente para o usuário - eu não quero matar o traversal via links simbólicos d4 / d6 / d9 para subdirecionamentos de dados1 / dados2.

Isso é possível usando uma combinação de enumeração de acesso controlado, smb.conf e ACLs? Se não, o que me aproximaria de uma solução?

    
por Stilez 06.03.2018 / 08:30

1 resposta

0

Não sei se entendi completamente sua solicitação, mas usar nullfs montagens é a primeira tática que me vem à mente.

Deixe a estrutura física e real sozinha. Chame physical_root por causa deste exemplo.

Crie um novo diretório vazio para o share_root e aponte o Samba para ele em seu smb4.conf.

Sob o share_root , crie pontos de montagem para todos os diretórios que você deseja expor para clientes Samba:

for DIR in d4 d6 d9; do
    mkdir /share_root/$DIR
done

Agora, monte nulo os diretórios físicos reais no phony share_root space:

mount_nullfs /physical_root/data1/data4 /share_root/d4
mount_nullfs /physical_root/data1/data6 /share_root/d6
mount_nullfs /physical_root/data2/data9 /share_root/d9

Essas montagens podem ser adicionadas ao / etc / fstab, provavelmente usando a opção 'mais tarde':

/physical_root/data1/data4  /share_root/d4  nullfs  rw,late  0  0
...etc...
    
por 10.11.2018 / 01:29