Eu tenho um serviço no meu Mac local que oferece um utilitário de linha de comando para trabalhar com ele a partir do Terminal (o serviço é FileMaker Server e o utilitário é fmsadmin
, mas não acho que esses fatos sejam relevantes). Quando o programa do servidor foi instalado, ele criou um usuário fmserver
para ele operar, e tudo o que o fmsadmin
parece estar sob esse usuário. Os arquivos criados pelo servidor ou pelo utilitário pertencem a fmsadmin
e no grupo wheel
, embora eu não saiba por que eles têm esse grupo, já que fmserver
não parece ser um membro dele.
O script que estou tentando gravar usará a ferramenta fmsadmin
para fazer um backup de um dos arquivos exibidos em uma pasta temporária. Isso eu tenho trabalhado. Mas, em seguida, quero mover o arquivo para um local diferente controlado pelo usuário conectado no momento.
E há o problema 22. fmsadmin
não pode gravar no local em que quero que o arquivo esteja, e minha conta não pode mover o arquivo para onde eu quero porque ele não tem permissão para movê-lo . Eu posso fazer isso manualmente no Finder, mas apenas colocando a senha da minha conta.
Atualmente, meu script (Python) está tendo o fmsadmin
de volta do arquivo para /tmp/
. O backup, mesmo sendo um único arquivo, cria uma estrutura de pastas, duplicando a estrutura de pastas que o FileMaker usa para hospedar os arquivos. Portanto, o comando backup faz com que o arquivo esteja em /tmp/Databases/Subfolder/database.fmp12
. Aqui estão os resultados de ls
para cada um deles:
drwxrwxr-x 3 fmserver wheel 96 Nov 17 16:01 Databases/
drwxrwxr-x 3 fmserver wheel 96 Nov 17 16:01 Subfolder/
-rw-rw-r-- 1 fmserver wheel 954368 Nov 17 16:10 database.fmp12
Id gostaria de mover o arquivo database.fmp12
para /Users/chuck/project-name/
drwxr-xr-x 8 chuck staff 256 Nov 17 16:09 project-name/
Como posso automatizar isso em um script (Python)? Atualmente eu me deparo com erros de permissão ao tentar mover o arquivo para onde eu quero ou ao tentar salvar o backup onde eu quero. Meu objetivo não é resolver isso apenas no meu sistema, mas fazer o script funcionar no sistema de outro usuário.