Banana Studio
News · BS Manager

SSH Server 0.13.0: seu shell SSH agora fica nas pastas dele

O SSH Server 0.13.0 faz o shell SSH seguir as mesmas regras do SFTP: o shell de cada usuário vê apenas as pastas que você atribui a ele, as pastas somente leitura continuam somente leitura e os arquivos ocultos continuam ocultos.

SSH Server 0.13.0: seu shell SSH agora fica nas pastas dele
On this page

SSH Server 0.13.0: seu shell SSH agora fica nas pastas dele

O SSH Server 0.13.0 já está disponível no Google Play para celulares, tablets e Android TV. Esta versão corrige uma falha com que alguns de vocês se depararam: o shell SSH agora segue as mesmas regras do SFTP. O shell de cada usuário vê apenas as pastas que você configurou para ele, e nada mais.

Um tour de um minuto pelas novidades da 0.13.0.

Por que isso importa

No SSH Server, você atribui a cada usuário uma lista de pastas. O SFTP sempre respeitou essa lista: um usuário a quem só foi dado Download via Download e nada mais.

O shell SSH não fazia isso. Quando o mesmo usuário abria um terminal com ssh, o shell começava na pasta privada do próprio app e podia explorar tudo o que o app conseguia alcançar. Isso era confuso ("Por que não encontro minha pasta Download no shell?") e significava que a lista de pastas não era um limite real para quem usasse o shell.

A partir da 0.13.0, a lista de pastas é o limite em todo lugar.

Antes: o shell podia navegar por tudo o que o app conseguia alcançar. Agora: apenas as pastas do usuário, Download (com escrita) e Photos (somente leitura)

O que o shell vê agora

O shell vê exatamente as pastas que o SFTP mostra para esse usuário:

  • Uma pasta: aparece como /. Se você der a um usuário /storage/emulated/0, então / no shell dele é o seu armazenamento interno.
  • Várias pastas: / as lista pelo alias. Um usuário com Download e DCIM (mostrada como Photos) vê exatamente duas pastas em /: Download e Photos.
  • Todo o resto some. O resto do seu armazenamento, os dados do próprio app e os de outros apps simplesmente não estão lá. Os caminhos que levariam para fora, incluindo .. e os truques do Linux via /proc, ficam dentro das pastas do usuário.

Suas ferramentas de shell de sempre continuam funcionando: ls, cd, cp, mv, find, cat, pipes, scripts e tarefas em segundo plano. Os arquivos de sistema do Android continuam legíveis para que esses comandos possam rodar, assim como em qualquer shell Android.

Aqui está uma sessão real no SSH Server 0.13.0:

Uma sessão SSH real: pwd mostra /, ls / mostra Download e Photos, escrever em Photos é recusado, /storage/emulated/0 não existe

As pastas somente leitura e os arquivos ocultos também se aplicam

Duas configurações que você já conhece do SFTP agora também funcionam no shell:

  • Writable: se a caixa Writable de uma pasta estiver desmarcada, o shell pode abri-la, lê-la e copiar arquivos dela, mas não pode criar, alterar, renomear nem excluir nada dentro. Você verá Read-only file system, como num disco somente leitura.
  • Show hidden files: se estiver desligada para um usuário, os arquivos e pastas cujo nome começa com um ponto (.ssh, .cache, …) também ficam de fora das listagens no shell: ls -a, find, o autocompletar com Tab. Como no SFTP, um arquivo oculto ainda pode ser aberto pelo nome exato.

A tela Users: o usuário tem Download (Writable marcado) e Photos (Writable desmarcado)

Como configurar

Não há nada de novo para ativar. O shell usa as pastas que você já definiu para cada usuário:

  1. Abra o SSH Server e toque em Users.
  2. Toque no lápis ao lado de um usuário.
  3. Em Access path, toque em Add new e escolha uma pasta. Repita para cada pasta que o usuário deve ter.
  4. Desmarque Writable em qualquer pasta que deva ser somente leitura.
  5. Toque em ✓ para salvar. Na próxima vez que esse usuário entrar, o shell dele mostrará exatamente estas pastas.

Não quer que um usuário tenha shell de jeito nenhum? A chave Disable shell na mesma tela continua desativando.

Funciona em todo lugar, sem root

O novo shell funciona sem root em todos os aparelhos que o SSH Server suporta: celulares, tablets e Android TV, com processadores ARM e x86 de 64 e 32 bits. Testamos do Android 6 ao Android 16.

Em alguns aparelhos muito antigos, principalmente Android 6 e 7 com um kernel de sistema desatualizado, falta ao sistema um recurso de que o shell precisa. Ali, o SSH Server não recorre a um shell sem restrições: a sessão mostra uma breve mensagem de que o shell não consegue iniciar e então fecha. O SFTP continua funcionando normalmente nesses aparelhos.

Duas correções

O SFTP não encerra mais sua sessão por um caminho errado. Se você abrisse um caminho fora das suas pastas, por exemplo ls /storage/emulated/0, a conexão podia fechar com Connection closed. Agora você recebe uma mensagem "not found" normal e continua trabalhando.

Antes: Connection closed. Agora: "not found", e a sessão continua

Users e SFTP Logs cabem na tela no Android 15 e posterior. Nas versões mais recentes do Android, o título e a seta de voltar dessas duas telas deslizavam para baixo da barra de status. Agora ficam abaixo dela.

No Android 15, o título da tela Users deslizava para baixo da barra de status; agora fica abaixo dela

Perguntas

Meus arquivos ficavam em /storage/emulated/0. Onde estão agora? Nas pastas do seu usuário. Rode ls / para vê-los. Se você deu ao usuário todo o seu armazenamento interno, é o próprio /.

O shell diz que está indisponível ou não consegue iniciar. O que posso fazer? Verifique se o usuário tem pelo menos uma pasta em Access path e se o SSH Server tem permissão para acessar seus arquivos. Se ambos estiverem certos, seu aparelho é um dos poucos sem o recurso de kernel de que o shell precisa; o SFTP continua funcionando.

Isso muda o SFTP? Não. O SFTP já funcionava assim. Só o shell mudou, além da correção do SFTP acima.

Baixar

O SSH Server 0.13.0 está sendo lançado no Google Play agora:

Obrigado a todos que nos escreveram sobre o shell e o SFTP. Continuem mandando seus comentários!

Videos

SSH Server 0.13.0: novidades

Related posts