Timeout ao desmontar compartilhamento SMB durante o desligamento

Pontos de montagem autofs são úteis para compartilhamentos de rede. Com o systemd, basta adicionar, em /etc/fstab, x-systemd.automount nas opções. Exemplo:

//192.168.0.10/Arquivos /mnt/Arquivos cifs credentials=/etc/senha-servidor,uid=marcos,gid=marcos,file_mode=0600,dir_mode=0700,x-systemd.automount 0 0

Isso evita que precisemos habilitar um serviço que implemente network-online.target, como NetworkManager-wait-online.service ou systemd-networkd-wait-online.service. Assim, não há atraso durante a inicialização. Apenas quando o ponto de montagem for acessado será montado.

Porém, durante o desligamento, a desmontagem sempre dava timeout e causava atraso com o NetworkManager ao usar conexões sem fio.

Analisando a cadeia de dependências, nada achei de errado. Estava em outro lugar o problema. O nm-applet, aquele programinha que fica no tray, salva conexões sem fio[1], pelo menos ao usar o plugin nativo keyfile, com o parâmetro connection.permissions configurado para o usuário corrente. Isso diz para o daemon que, quando o usuário fizer logout, a conexão deve ser finalizada. Como o logout ocorre antes do processo de desligamento, a rede é desconectada cedo demais e a desmontagem falha. Portanto, precisamos tornar a conexão global, não restrita a usuário algum. Podemos fazer via nm-connection-editor:

Marcar "Todos os usuários podem conectar a esta rede"

Ou através da linha de comando:

$ nmcli connection modify <ssid> connection.permissions ""

(substituindo <ssid> pelo nome da rede)


[1] Conexões cabeadas são globais por padrão.

Comentários