Como posso contornar esses problemas de permissão?

0

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.

    
por Chuck 18.11.2017 / 01:37

2 respostas

0

Depois de muita ajuda do igal , encontrei uma solução. O resultado final que eu queria era que um arquivo gravado pelo usuário fmserver fosse colocado em um local específico. fmserver não pôde gravar na pasta e chuck não conseguiu movê-la da pasta temp. Ambos os usuários, no entanto, eram membros do grupo staff , portanto, editar as permissões para a pasta de destino com chmod g+w project-folder foi a resposta.

    
por 18.11.2017 / 22:51
1

Existem algumas coisas que você pode fazer. O mais fácil é simplesmente adicionar chuck ao grupo wheel . Existe uma razão pela qual isso não funcionará?

Como alternativa, você pode tentar alterar o proprietário de /tmp/Databases/ para o grupo staff e, em seguida, definir o bit setgid em esse diretório , ou seja:

sudo chown :staff '/tmp/Databases/'
sudo chmod g+s '/tmp/Databases/'

Em seguida, todos os novos arquivos criados nesse diretório devem pertencer a staff . Em qualquer um dos casos, você provavelmente desejará ter certeza de que o usuário fmserver tenha a umask correta, embora, com base no que você postou, pareça ter. Confira este post:

Parece que você pode usar launchctl para definir o umask no OS X:

launchctl config fmserver umask 002

Há também a opção mais sofisticada de usar listas de controle de acesso. Para mais sobre isso, veja o seguinte post AskDifferent:

por 18.11.2017 / 02:27