Bloqueando o usuário SFTP no cygwin

1

Eu configurei um usuário para ssh no Windows Server 2008 R2.

Consegui mudar o diretório padrão.

A única peça que não consegui descobrir é como restringir o usuário a apenas esse diretório.

Em outras palavras, não quero que o usuário possa alterar o diretório.

Por favor informar.

EDITAR:

Aqui é onde eu estou:

  • Cygwin instalado
  • Usuário ( James) criado no Windows
  • Grupo (SftpUser) criado no Windows
  • SftpUser não está aparecendo no / etc / passwd
  • em vez disso, há algum Nonegrupo do qual James é membro
  • Posso entrar com meu usuário
  • cygdrivee devdiretório estão listados (eu não quero isso)
  • cygdrive está vazia


Aqui está o cenário

Eu quero Jamesde sftpUsergrupo a ser restrita à sua pasta upload. O caminho está em uma unidade externa:

D:\uploads\james_folder\

em cygwin

/cygdrive/d/uploads/james_folder/

Eu não me importo de ter a restrição de

/home/james/upload

E então monte o diretório no caminho inicial, mas parece que o cygwin não está incluído no samba.

sshd_config

Match user james
    ChrootDirectory /home/james/upload/
    ForceCommand internal-sftp
meda
fonte
Eu acho que a maneira certa de fazer isso é definir as ACLs apropriadas para negar o acesso de James a quase tudo.
Gilles
@Gilles obrigado pela sua sugestão, como eu vou fazer sobre isso
meda
Se soubesse, teria escrito uma resposta. Eu não sou um especialista em Windows.
Gilles

Respostas:

1

Eu configurei o SFTP pelo cygwin recentemente e percebi que não podemos ocultar os seguintes diretórios:

  • / cygdrive
  • / dev

Como você deve estar ciente de que o / caminho / para / sftp deve ser de propriedade raiz e não pode ser gravado por nenhum outro usuário ou grupo, é necessário atualizar o ID do usuário em / etc / passwd para 0 porque não há conceito raiz no Windows.

Se você prender o usuário no non-cygdrive (por exemplo, / sftp), verá apenas / cygdrive (nada será exibido em / cygdrive).

Se você prender o usuário no cygdrive (por exemplo, /cygdrive/d/.../sftp), você verá / cygdrive / d. No entanto, você não pode mudar para nenhum diretório pai se configurá-lo corretamente.

Espero que a informação acima ajude!


Por favor, verifique o seguinte:

  1. Verifique se o ID do usuário atual que está efetuando login (james no seu exemplo) em / etc / passwd é zero. Isso ocorre porque o cygwin alterará o usuário de todos os diretórios no diretório raiz como o usuário atual efetuando login. Execute o ls -l /comando para verificar.
  2. Verifique se / home, / home / james, / home / james / upload é o usuário atual (ou seja, equivalente à propriedade root com o ID de usuário 0).
  3. Verifique se / etc / sshd_config contém:

    Match user james
    ChrootDirectory /home/james/upload/
    ForceCommand internal-sftp
    
chesschi
fonte
if you set it up correctly.você pode por favor exaltar?
meda
consulte as informações adicionais que eu adicionei e ver se isso ajuda
chesschi
1

Você precisaria configurar um ChrootDirectorydiretório no sshd_config

Instruções detalhadas para o ArchLinux estão disponíveis no chroot do SFTP .

O esboço básico é o seguinte:

1) Adicione a configuração chroot a sshd_confg:

Match User username
ChrootDirectory /home/%u
ForceCommand internal-sftp

2) Altere os direitos do diretório chroot com algo como:

chown root.root /home/<user>
usermod -d / <user>

3) Corrigindo o caminho para chaves_computadas com algo como:

AuthorizedKeysFile      %h/.ssh/authorized_keys

Uma postagem na lista de discussão cygwin relata o sucesso usando esse método para restringir o acesso com uma configuração semelhante à acima.

ssnobody
fonte
Eu li que chroot não funciona com cygwin, mas eu experimentá-lo agora, graças
meda
-bash: usermod: command not founde chown: invalid user: âroot.rootâé o que eu recebo
meda
É improvável que você precise desses comandos, mas o root.root seria algo como administrator.administrators, pois geralmente não há um usuário e grupo raiz no Windows. Quanto ao usermod não existente no cygwin, eu sugiro apenas editar manualmente o / etc / passwd e mudando o diretório home do usuário restrito a /
ssnobody
mas veja o diretório ao qual desejo fornecer acesso. /cygdrive/d/UPLOAD/user_folder/Você pode ajustar sua resposta para esse caminho? e você não existe usuário root. +1
meda
os comandos agora funciona, mas quando eu testar eu recebo sshd: PID 4332: fatal: bad ownership or modes for chroot directory component "/"no log do servidor, eu não tenho certeza por que ele aponta para o diretório raiz
meda