Banana Studio
News · BS Manager

SSH Server 0.13.0: je SSH-shell blijft nu in zijn mappen

SSH Server 0.13.0 laat de SSH-shell dezelfde regels volgen als SFTP: de shell van elke gebruiker ziet alleen de mappen die je hem toewijst, alleen-lezen mappen blijven alleen-lezen en verborgen bestanden blijven verborgen.

SSH Server 0.13.0: je SSH-shell blijft nu in zijn mappen
On this page

SSH Server 0.13.0: je SSH-shell blijft nu in zijn mappen

SSH Server 0.13.0 is nu beschikbaar op Google Play voor telefoons, tablets en Android TV. Deze versie dicht een gat waar sommigen van jullie tegenaan liepen: de SSH-shell volgt nu dezelfde regels als SFTP. De shell van elke gebruiker ziet alleen de mappen die je voor hem hebt ingesteld, en niets anders.

Een rondleiding van een minuut langs het nieuwe in 0.13.0.

Waarom dit belangrijk is

In SSH Server geef je elke gebruiker een lijst met mappen. SFTP heeft die lijst altijd gerespecteerd: een gebruiker die alleen Download kreeg, zag Download en niets meer.

De SSH-shell niet. Wanneer dezelfde gebruiker een terminal opende met ssh, startte de shell in de eigen privémap van de app en kon hij overal rondkijken waar de app zelf bij kon. Dat was verwarrend ("Waarom vind ik mijn Download-map niet in de shell?") en het betekende dat de mappenlijst geen echte grens was voor wie de shell gebruikte.

Vanaf 0.13.0 is de mappenlijst overal de grens.

Voorheen: de shell kon door alles bladeren waar de app bij kon. Nu: alleen de mappen van de gebruiker, Download (schrijfbaar) en Photos (alleen-lezen)

Wat de shell nu ziet

De shell ziet precies de mappen die SFTP voor die gebruiker toont:

  • Eén map: die verschijnt als /. Als je een gebruiker /storage/emulated/0 geeft, dan is / in zijn shell je interne opslag.
  • Meerdere mappen: / toont ze op hun alias. Een gebruiker met Download en DCIM (getoond als Photos) ziet precies twee mappen in /: Download en Photos.
  • Al het andere is weg. De rest van je opslag, de gegevens van de app zelf en die van andere apps zijn er simpelweg niet. Paden die naar buiten zouden leiden, waaronder .. en Linux-trucs via /proc, blijven binnen de mappen van de gebruiker.

Je vertrouwde shell-tools blijven werken: ls, cd, cp, mv, find, cat, pipes, scripts en achtergrondtaken. De systeembestanden van Android blijven leesbaar zodat die opdrachten kunnen draaien, net als in elke Android-shell.

Hier is een echte sessie op SSH Server 0.13.0:

Een echte SSH-sessie: pwd toont /, ls / toont Download en Photos, schrijven naar Photos wordt geweigerd, /storage/emulated/0 bestaat niet

Alleen-lezen mappen en verborgen bestanden gelden ook

Twee instellingen die je al kent van SFTP werken nu ook in de shell:

  • Writable: als het vakje Writable van een map niet is aangevinkt, kan de shell hem openen, lezen en er bestanden uit kopiëren, maar er niets in aanmaken, wijzigen, hernoemen of verwijderen. Je ziet Read-only file system, net als op een alleen-lezen schijf.
  • Show hidden files: als dit voor een gebruiker uit staat, worden bestanden en mappen waarvan de naam met een punt begint (.ssh, .cache, …) ook in de shell uit de lijsten weggelaten: ls -a, find, tab-aanvulling. Net als in SFTP kan een verborgen bestand nog steeds op zijn exacte naam worden geopend.

Het scherm Users: de gebruiker heeft Download (Writable aangevinkt) en Photos (Writable niet aangevinkt)

Hoe stel je het in

Er is niets nieuws om aan te zetten. De shell gebruikt de mappen die je al voor elke gebruiker hebt ingesteld:

  1. Open SSH Server en tik op Users.
  2. Tik op het potlood naast een gebruiker.
  3. Tik onder Access path op Add new en kies een map. Herhaal voor elke map die de gebruiker moet krijgen.
  4. Haal het vinkje bij Writable weg voor elke map die alleen-lezen moet zijn.
  5. Tik op ✓ om op te slaan. De volgende keer dat die gebruiker inlogt, toont zijn shell precies deze mappen.

Wil je dat een gebruiker helemaal geen shell heeft? De schakelaar Disable shell op datzelfde scherm zet hem nog steeds uit.

Werkt overal, geen root nodig

De nieuwe shell werkt zonder root op elk apparaat dat SSH Server ondersteunt: telefoons, tablets en Android TV, met 64-bits en 32-bits ARM- en x86-processors. We hebben het getest van Android 6 tot en met Android 16.

Op enkele zeer oude apparaten, vooral Android 6 en 7 met een verouderde systeemkernel, mist het systeem een functie die de shell nodig heeft. Daar valt SSH Server niet terug op een onbeperkte shell: de sessie toont een korte melding dat de shell niet kan starten en sluit dan. SFTP blijft op die apparaten gewoon werken.

Twee oplossingen

SFTP beëindigt je sessie niet meer bij een verkeerd pad. Als je een pad buiten je mappen opende, bijvoorbeeld ls /storage/emulated/0, kon de verbinding sluiten met Connection closed. Nu krijg je een normale "not found"-melding en werk je door.

Voorheen: Connection closed. Nu: "not found", en de sessie gaat door

Users en SFTP Logs passen op het scherm op Android 15 en later. Op nieuwere Android-versies schoven de titel en de terugpijl van deze twee schermen onder de statusbalk. Nu staan ze eronder.

Op Android 15 schoof de titel van het scherm Users onder de statusbalk; nu staat hij eronder

Vragen

Mijn bestanden stonden vroeger in /storage/emulated/0. Waar staan ze nu? In de mappen van je gebruiker. Voer ls / uit om ze te zien. Als je de gebruiker je hele interne opslag hebt gegeven, is dat / zelf.

De shell zegt dat hij niet beschikbaar is of niet kan starten. Wat kan ik doen? Controleer of de gebruiker ten minste één map onder Access path heeft en of SSH Server toestemming heeft om bij je bestanden te komen. Als beide in orde zijn, is je apparaat een van de weinige zonder de kernelfunctie die de shell nodig heeft; SFTP werkt nog steeds.

Verandert dit SFTP? Nee. SFTP werkte al zo. Alleen de shell is veranderd, plus de SFTP-oplossing hierboven.

Downloaden

SSH Server 0.13.0 wordt nu uitgerold op Google Play:

Bedankt aan iedereen die ons over de shell en SFTP heeft geschreven. Blijf je feedback sturen!

Videos

SSH Server 0.13.0: wat is er nieuw

Related posts