define umask antes de cada comando shell non-non-interactive

1

Estou usando o script PHP e para conectar ao servidor ssh. Ele executa um comando e sai. A conexão é feita para o shell de login não interativo e não. Por causa disso, ele não carrega .bashrc ou bash_profile arquivos, portanto não é possível definir o umask adequado. Eu pesquisei algumas informações sobre o funcionamento interno do ssh e parece que eu posso usar o arquivo ~/.ssh/rc para executar alguns comandos após a conexão ssh. Meu ~/.ssh/rc no servidor estou conectando:

#!/bin/bash

echo "Setting umask to 002"
umask 002
echo "Umask set"

O problema é que minha umask não está definida corretamente. Quando executo meu script e ele executa o comando umask no servidor, recebo 0022 umask:

Run: cd /local/web/ && umask
> Setting umask to 002
> Umask set
> 0022

Por que não está funcionando?

    
por piotrekkr 16.10.2015 / 11:58

1 resposta

1

umask só funciona se for executado por um comando interno.

Não chame o script pelo nome, mas chame . script para permitir que ele seja executado pelo processo shell atual.

Se, no entanto, você ficar confuso com o valor impresso como 0022 em vez de 022 , não há diferença, esses valores são idênticos.

Teste o POSIX umask -S para obter uma saída mais compreensível.

    
por 16.10.2015 / 12:23