permissões de arquivo e propriedade de grupo usando sftp

5

Existe uma maneira de ter todos os arquivos criados por um usuário em sftp para ter um grupo específico e permissões de arquivo? O usuário em questão, é claro, será um membro do grupo, mas não é seu grupo principal. Em outras palavras, existe uma maneira de o sftp duplicar automaticamente os efeitos de umask e newgrp?

    
por user24844 14.01.2010 / 21:23

4 respostas

5

Existe um subsistema no SSH (Open): é um programa que é lançado quando você solicita algo diferente de shell interativo. Tecnicamente é apenas um executável no host remoto que é exec 'd por sshd child depois de autenticar você e chamar setuid.

Você pode localizar uma definição de subsistema padrão para sftp em sua configuração de SSH:

Subsystem sftp /usr/lib/openssh/sftp-server

Como é apenas um executável simples, não um SUID ou especial de qualquer outra forma, você pode escrever um script de shell que alterará quaisquer atributos necessários e, em seguida, apenas iniciará o manipulador de subsistema original.

Coloque o seguinte script na pasta /usr/lib/openssh como, por exemplo, sftp-fperm-server (isso não é necessário, apenas para manter as coisas em um só lugar):

#!/bin/sh
umask 026
exec /usr/lib/openssh/sftp-server

Em seguida, adicione uma linha no final de /etc/ssh/sshd_config :

Subsystem sftp-fperm /usr/lib/openssh/sftp-fperm-server

Em seguida, reinicie o sshd (ele não interrompe as sessões na reinicialização) e inicie sftp com a opção -s sftp-fperm . Voila! os arquivos recebem a nova umask especificada.

Se você não quiser especificar essa opção a cada vez, apenas altere a definição do subsistema padrão. Sessões interativas não serão afetadas por isso, então não há chances de quebrar algo.

Se você quiser usar o comando newgrp , as coisas serão um pouco mais complicadas. newgrp sempre lança um novo shell interativo enquanto estupidamente não permite passar nenhum parâmetro para ele, então você não pode usá-lo como umask no exemplo anterior. Mas você pode substituir a última linha no script por:

SHELL=/usr/lib/openssh/sftp-server newgrp git

Na verdade, chamar o newgrp para algum grupo ao qual pertenço envia uma solicitação de senha, por isso não pude verificar essa solução (quero dizer apenas newgrp one), mas funciona quando passo o /bin/id em meu laptop (sem SSH), então se você tem newgrp trabalhando para o usuário, nenhum problema deve surgir.

    
por 06.06.2010 / 02:39
2

Para adicionar ao que o whitequark está dizendo, você poderia construir uma solução nesse sentido, mas usar o comando "sg" no lugar de newgrp, que é um tipo de "su" para grupos. Olhe como "man sg" em qualquer sistema linux, pelo menos.

    
por 28.10.2010 / 13:12
1

chmod g+s directory
Concederá a propriedade ao grupo do usuário para todos os diretórios & arquivos criados no futuro.

    
por 28.02.2013 / 16:50
0

Eu diria que isso é específico do servidor. Verifique a configuração do servidor para possíveis opções de configuração.

    
por 15.01.2010 / 06:11