Acontece que eu estava simplesmente procurando no lugar errado - eu tinha esquecido que a conta no host do Windows precisava ter permissões de acesso corretas definidas na pasta compartilhada; só tinha Read & execute
, Write
e List folder contents
. Doh! Adicionar Modify
corrigiu o problema. Então, nada além de um erro bobo - mas eu também aprendi um pouco mais sobre o sintaxe cifs e fstab
e descobri como montar como um usuário simples, permitindo que os pontos de montagem estejam na minha pasta /home/user
. A string de montagem final no meu fstab se parece com isso (meus valores são substituídos por [tokens]):
//[server]/[share] /home/[user]/[folder] cifs credentials=/home/[user]/.config/samba/.[server],uid=[user],gid=[group] 0 0
Portanto, você só precisa definir uid
e gid
para o usuário e grupo que deseja possuir os arquivos no compartilhamento após a montagem - sem necessidade de mais nada. Eu também coloquei as credenciais de usuário do Windows necessárias em um arquivo separado sob o meu diretório .config e fiz chmod 400
para impedir que outras pessoas o lessem.
Levou um tempo surpreendentemente longo para descobrir tudo isso, pois há um milhão de argumentos para usar com cifs, e muitos parecem tê-los entendido mal - muitas pessoas recomendam usar file_mode
/ dir_mode
777 (que soa como uma idéia muito ruim para mim), e pimenta com argumentos desnecessários como nounix
, noperm
, rw
, iocharset
e noacl
- nenhum deles é necessário para fazer este trabalho. Então, enquanto o meu problema foi causado por um simples erro, deixarei a pergunta (e esta resposta) aqui; espero que alguém ache útil!
Edit: Devido a um bug na implementação do cifs do Samba , é necessário adicionar o nobrl
opção também se você pretende executar bancos de dados SQLite no compartilhamento. Basicamente, o atual cliente Samba cifs Linux não pode lidar com a maneira como o SQLite bloqueia o arquivo de banco de dados. Não é uma ótima solução, e quase certamente uma má idéia em um ambiente multiusuário, mas como no meu caso é um compartilhamento de usuário único, e hospedado na mesma máquina que o cliente (que deve eliminar a latência da rede), eu vou rola com ele.
nobrl
Do not send byte range lock requests to the server. This is necessary for certain applications that break with cifs style mandatory byte range locks (and most cifs servers do not yet support requesting advisory byte range locks).
A entrada fstab agora é assim:
//[server]/[share] /home/[user]/[folder] cifs nobrl,credentials=/home/[user]/.config/samba/.[server],uid=[user],gid=[group] 0 0