Como especificar a permissão do arquivo ao colocar um arquivo usando o comando sftp OpenSSH

2

Estou usando vários clientes SFTP para fazer upload de arquivos para um servidor SFTP e tenho um problema com a permissão padrão usada ao colocar arquivos.

Ao solicitar um arquivo, o cliente SFTP, como o WinSCP ou o Filezilla, enviará o comando SSH_OPEN sem solicitar permissão explícita para o arquivo.

Por outro lado, parece que o comando sftp do OpenSSH no Linux (Red Hat e Ubuntu) está pendente do comando SSH_OPEN junto com o modo '640'.

Como posso configurar o comando OpenSSH para não definir explicitamente o modo de arquivo ou como configurá-lo para enviar um modo diferente de 640?

Muito obrigado!

Atualização:

Eu verifiquei o código-fonte do cliente OpenSSH sftp e parece que o OpenSSH sftp sempre tentará preservar o modo de arquivo, mesmo que -P não esteja definido: link

Para resolver esse problema, usei o cliente Putty SFTP.

    
por Adi Roiban 23.06.2011 / 18:45

3 respostas

2

Se um cliente SFTP não especificar permissões para arquivos enviados, o servidor SFTP do OpenSSH atribuirá permissões 0664 aos arquivos recém-criados. Isso é para a umask 0002 padrão, que você pode alterar usando a opção -u , como mostra a resposta de @JimB.

Se um cliente SFTP especifica as permissões, o servidor OpenSSH usa as permissões especificadas (o umask não se aplica).

Visão geral de alguns clientes SFTP populares:

por 27.01.2015 / 22:05
1

O servidor sftp criará o novo arquivo com o umask padrão do usuário. Isso pode ser substituído com a opção -u umask para sftp-server

SFTP-SERVER(8)
     -u umask
             Sets an explicit umask(2) to be applied to newly-created files 
             and directories, instead of the user's default mask.

O cliente (OpenSSH sftp) pode optar por preservar a permissão local usando a opção -p , que enviará o arquivo e o fchmod apropriadamente.

SFTP(1) 
     -p      Preserves modification times, access times, and modes from the 
             original files transferred.

Se você está estritamente perguntando como definir um modo de arquivo obrigatório com o cliente sftp; você não pode (pelo menos com o openssh sftp-client). Você terá que enviar um chmod depois de enviar o arquivo.

    
por 27.06.2011 / 16:44
0

Acredito que o servidor sftp usará umask padrão do perfil do usuário, a menos que tenha sido iniciado com umask explícita (man 8 sftp-server para detalhes).

    
por 23.06.2011 / 19:42