Como corrigir problemas de permissões indescritíveis - Rasp Pi, HFS +, SMB, Mac

2

Eu tenho um Raspberry Pi rodando Transmission. A partição de dados principal está em uma unidade USB. A partição é formatada como HFS + (hfsplus), caso eu precise conectá-la ao meu Mac. O Mac se conecta à partição de dados via Samba.

A transmissão tem um recurso para executar um script quando o download é concluído. Mas isso não reconhece que o download ainda pode ser semeado. Em vez disso, tenho um trabalho cron executando sob o meu nome de usuário "myuser". Esse trabalho aciona um script que verificará se um download foi concluído, determinará se ele ainda está sendo propagado e, caso contrário, processará o download.

O cronjob foi configurado usando crontab -e sob myuser:

*/5 * * * * /media/Data/torrents/torrent-clean

O script criará um novo diretório, se necessário, e moverá o arquivo para esse diretório. A maior parte do script está envolvida na formatação do nome do novo arquivo e diretório e do acesso ao daemon do torrent. As linhas pertinentes são:

mkdir "${target}/${folder_title}"
mv "$the_video" "${target}/${folder_title}/${video_title}"

O script inteiro: link

O diretório é criado pelo script com o usuário / grupo "myuser users" e o arquivo é criado com "myuser myuser". (Por quê?)

drwxr-xr-x 1 myuser users 3 Nov 28 10:33 some.directory
-rw-rw-r-- 1 myuser myuser 48477071 Nov 28 10:06 some.file.ABC.mp4

Quando eu acesso o novo arquivo do Mac e tento alterar seu nome, coisas estranhas acontecem:

  • Se eu excluir o "C" maiúsculo do nome, eu sou bem sucedido.
  • Se eu adicionar um "c" minúsculo de volta ao nome, às vezes ele aceita o "c" minúsculo e às vezes ele volta para um "C" maiúsculo. (Por quê?)
  • Se eu alterar a letra maiúscula "ABC" para um "abc" minúsculo, recebo um erro de permissão. (Por quê?)

Durante a mudança bem-sucedida do nome, as permissões são alteradas:

-rw-rw-r-- 1 myuser myuser 48477071 Nov 28 10:06 some.file.ABC.mp4
-rwxrwxr-x 1 myuser myuser 48477071 Nov 28 10:06 some.file.ABC.mp4 (Why?)

Coisas semelhantes, mas ligeiramente diferentes, acontecem ao alterar o nome do diretório:

  • Se eu adicionar a letra maiúscula "A" ao nome, eu sou bem sucedido.
  • Se eu alterar a letra maiúscula "A" para maiúscula "E", obtenho sucesso.
  • Se eu alterar a letra maiúscula "E" para "e" minúsculo, ela será aceita, mas será alterada para "E" maiúsculo.
  • Se eu alterar novamente a letra maiúscula "E" para "e" minúscula, recebo um erro de permissão. (Por quê?)

Durante a mudança bem-sucedida do nome, as permissões são alteradas:

from: drwxr-xr-x 1 myuser users 3 Nov 28 10:33 some.directory
to: drwxrwsr-x 1 myuser users 3 Nov 28 10:33 some.directoryE  (Why?)

Algumas destas podem ser causadas por SMB. As partes relevantes do meu smb.conf:

[Pi2_Data]
path = /media/Data
valid users = @users
force group = users
create mask = 0775
force create mode = 0775
security mask = 0775
force security mode = 0775
directory mask = 2775
force directory mode = 2775
directory security mask = 2775
force directory security mode = 2775
browseable = yes
writeable = yes
guest ok = no
read only = no

Obrigado por qualquer ideia.

    
por rammjet 28.11.2014 / 17:14

2 respostas

1

De acordo com wikipedia (último parágrafo):

HFS saves the case of a file that is created or renamed but is case-insensitive in operation.

Na prática, isso geralmente significa que você não pode renomear um arquivo enquanto preserva o nome. Executar isso via Samba (que provavelmente espera um sistema de arquivos com distinção entre maiúsculas e minúsculas, já que estes existem há pelo menos 30 anos) só pode melhorar os problemas.

Se um requisito é que o disco deve ser conectado diretamente ao Mac, eu gostaria de instalar o OSXFuse no Mac e formatar a unidade com o ext3.

    
por 28.11.2014 / 19:09
1

Eu fui em uma direção diferente e resolvi meu problema. O comentário de Braiam e a resposta de Anthon me levou a pensar e pesquisar o Samba. Isso me levou a descobrir que o Linux tem um serviço para AFP (Apple File Protocol), que é o compartilhamento de arquivos da Apple. O serviço do Linux é o Netatalk.

Não apenas respeita as alterações do nome do meu arquivo, mas também permite que eu use outros atributos do Apple Finder.

Eu desliguei o Samba e instalei o Netatalk.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install netatalk

Edite o arquivo de configuração

sudo service netatalk stop
sudo nano /etc/netatalk/AppleVolumes.default

Na parte inferior do arquivo, adicione seus compartilhamentos

# By default all users have access to their home directories.
~/  "Home Directory"
/media/Data  "Pi Data"

Reinicie o netatalk

sudo service netatalk start

Conecte o Mac aos compartilhamentos.

    
por 28.11.2014 / 20:55