Instalação do Samba em sistema somente leitura

Instalação do Samba em sistema somente leitura

Não consegui encontrar nada útil na web.

Aqui está a história. Estou tentando instalar o Samba (versão 4.5.12) no Debian (Raspbian, mas não importa). O Debian é instalado em um sistema de arquivos somente leitura. A instalação está ok, mas o samba não está iniciando no modo RO (somente leitura). Eu estava tentando fazer links simbólicos de dados necessários ( /var/lib/samba files) no HDD externo (que é leitura-gravação), mas recebi um erro no início do Samba - o systemctl falhou ao iniciar o smdb.service. Não havia systemctl statusnada de interessante. Mas em samba/log.eu descobri isso:

[2018/04/01 17:11:55.333301,  0] ../lib/util/util.c:270(directory_create_or_exist_strict)
  directory /var/lib/samba/private/msg.sock isn't a directory
[2018/04/01 17:12:35.116576,  0] ../lib/util/util.c:270(directory_create_or_exist_strict)
  directory /var/lib/samba/private/msg.sock isn't a directory
[2018/04/01 17:42:24.843043,  0] ../lib/util/util.c:216(directory_create_or_exist)
  mkdir failed on directory /var/lib/samba/private/msg.sock: Read-only file system
[2018/04/01 18:04:41.824892,  0] ../lib/util/util.c:216(directory_create_or_exist)
  mkdir failed on directory /var/lib/samba/private/msg.sock: No such file or directory

Pesquisar no Google me ajudou a descobrir que a directory_create_or_exist_strictfunção no código-fonte do Samba verifica se os diretórios (no meu caso /var/lib/samba/private/msg.sock) são reais.

Existe alguma solução Linux? Devo reescrever a directory_create_or_exist_strictfunção ou criar o caminho absoluto para msg.socko diretório no disco rígido externo? Ou existe alguma outra maneira de espelhar essa pasta no disco rígido externo? Por favor, compartilhe algumas dicas comigo.

Responder1

O problema é provavelmente que você está usando um softlink para redirecionar a pasta var do samba para o outro disco.
Um softlink se comporta de maneira um pouco diferente de uma pasta real e pode não ser aceitável para o código de criação do soquete samba.

O que eu faria em uma configuração como a sua é colocar todo o sistema de arquivos /var no outro disco (ou como um tmpfs) e simplesmente montá-lo no momento da inicialização.
Ou, se você não quiser ir até o fim, basta criar um sistema de arquivos tmpfs na inicialização e montá-lo em /var/lib/samba.

Um ponto de montagem deve estar OK. Caso contrário, nenhum sistema Linux seria capaz de colocar /var em um sistema de arquivos diferente.

informação relacionada