Por que o script em if-up.d não monta meu compartilhamento de samba?

0

Eu tenho uma entrada em /etc/fstab para montar um compartilhamento do Windows

//192.168.178.4/files   /media/share/d   cifs   credentials=/home/arnold/.credentials,rw,dir_mode=0777,file_mode=0777   0 0

que não está montado durante o boot / login. Quando eu faço o login, vejo que o compartilhamento não está montado, depois de um sudo mount -a é. Nos fóruns da hortelã, foi sugerido que a rede não estava funcionando. Criar um script em /etc/network/if-up.d/fstab (ou outro nome) resolveria o problema. Na verdade, esse diretório é destinado a scripts como este. Uma excelente sugestão. Eu criei o script, mas infelizmente não funcionou. Eu adicionei algumas declarações de log e o script é assim:

#!/bin/sh
date +"%m/%d/%Y %H:%M:%S $HOSTNAME fstab before mounting" >>/var/log/fstab.log
#mount -av >>/var/log/fstab.log
date +"%m/%d/%Y %H:%M:%S $HOSTNAME fstab mount executed" >>/var/log/fstab.log
echo " " >>/var/log/fstab.log

O script é executável e o proprietário é raiz. Quando executo o script após o login, o compartilhamento é montado corretamente. Certifiquei-me de que o arquivo de log estava vazio e copiei diretamente após o login, onde se lê:

01/03/2017 09:55:45  before mounting
/                        : ignored
/data                    : already mounted
/home                    : already mounted
none                     : ignored
01/03/2017 09:55:45  mount executed

01/03/2017 09:55:45  before mounting
/                        : ignored
/data                    : already mounted
/home                    : already mounted
none                     : ignored
01/03/2017 09:55:45  mount executed

01/03/2017 09:55:51  before mounting
/                        : ignored
/data                    : already mounted
/home                    : already mounted
none                     : ignored
01/03/2017 09:55:51  mount executed

É executado três vezes (uma vez para cada interface de rede?). Quando próximo eu corro sudo mount -av eu recebo:

/                        : ignored
/data                    : already mounted
/home                    : already mounted
none                     : ignored
/media/share/d           : successfully mounted

Como você pode ver comparando esses dois logs, nenhuma tentativa (visível) é feita pela montagem para montar o compartilhamento de rede durante a inicialização.

Eu obtive muitas sugestões excelentes para soluções alternativas nos fóruns do Linux, mas nenhum deles respondeu a pergunta porque o script no if-up.d se comporta de maneira estranha e eu não tenho nenhuma solução que me dê um compartilhamento montado a partir do terminal acessível através do navegador de arquivos embora). Eu tenho as seguintes perguntas:

  • é if-up.d o lugar para montar um compartilhamento de arquivo?
  • em caso afirmativo, qual poderia ser a razão pela qual isso não funciona no meu sistema (o que estou fazendo errado?)
  • se não, qual é o local regular para essas montarias?

Eu sou um novato no Linux e vejo esse problema como um curso intensivo no Linux :-), mas fique por perto se eu não entender uma sugestão de uma vez.

Usando o mint 18.1 com mate, o servidor é um QNAP NAS que possui o firmware mais recente.

Editar Eu estava procurando pontos nos logs que mencionaram algo sobre a montagem desse compartilhamento e encontrei algumas entradas em /var/log/syslog :

Jan  3 09:19:53 lassus systemd[1]: Started Network Manager Wait Online.
Jan  3 09:19:53 lassus systemd[1]: Reached target Network is Online.
Jan  3 09:19:53 lassus systemd[1]: Mounting /media/share/d...
Jan  3 09:19:53 lassus systemd[1]: Starting /etc/rc.local Compatibility...
Jan  3 09:19:53 lassus mount[1301]: error 2 (No such file or directory) opening credential file /home/arnold/.credentials
Jan  3 09:19:53 lassus systemd[1]: media-share-d.mount: Mount process exited, code=exited status=2
Jan  3 09:19:53 lassus systemd[1]: Failed to mount /media/share/d.
Jan  3 09:19:53 lassus systemd[1]: Dependency failed for Remote File Systems.
Jan  3 09:19:53 lassus systemd[1]: remote-fs.target: Job remote-fs.target/start failed with result 'dependency'.
Jan  3 09:19:53 lassus systemd[1]: media-share-d.mount: Unit entered failed state.

O arquivo de credenciais existe absolutamente. Eu mudei o dono de mim mesmo para a raiz, mas isso também não ajudou.

    
por Arnold 03.01.2017 / 11:20

2 respostas

1

Estou coletando os comentários como resposta, caso alguém enfrente a mesma situação ou tenha um conhecimento melhor para melhorar as informações.

O comportamento que você percebeu parece ser uma consequência do fato de que, ao tentar montar o seu compartilhamento de samba, mount é incapaz de acessar o arquivo de credenciais.

Mas o arquivo de credenciais existe e é legível por mount , portanto, o problema parece ser a partição /home não disponível (não montada) quando necessário.

Mover o arquivo de credenciais em algum lugar dentro da / partion (dentro de /etc , por exemplo) resolve o problema.

    
por 03.01.2017 / 21:15
0

Use o crontab como root:

@reboot until /usr/bin/fping -q 192.168.178.4; do sleep 1;done && /bin/mount -av
    
por 03.01.2017 / 11:27