Δημοσιεύτηκε: 29 Σεπ 2016, 16:47
από pc_magas
Πολλάκις παρατηρήσατε ότι όταν κάνετε ssh στο giithub.com σας εμφανίζει τα κάτωθι:
Κώδικας: Επιλογή όλων
PTY allocation request failed on channel 0
Hi pc-magas! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.


Έτσι ώντας καλός χάκερ (Οκ συνείδηση είμαι ψωνάρα ;) ) σκεύτικα:
Θα μπορούσα να τρέξω μια εφαρμογή σε ένα απομακρυσμένο μηχάνημα απ' ευθείας με το που κάνω ssh χωρίς να μπώ καθόλου σε shell;


Και η απάντηση είναι ΝΑΙ.

Έτσι έκανα μια απλή εφαρμογή σε παλιά καλή C (να θυμηθούμε και τα φοιτητικά μας χρόνια):
Κώδικας: Επιλογή όλων
#include<stdio.h>

int main(int argc, char *argv)
{
  puts("Hello World!");
  return 0;
}


To αποθήκευσα σαν hello.c και την έκανα compile:
Κώδικας: Επιλογή όλων
gcc hello.c


Και μετά μετέφερα το a.out στον φάκελο /bin:

Κώδικας: Επιλογή όλων
sudo mv a.out /bin/hello


Έτσι δίνοντας απλά hello στο terminal δείχνει το μύνημα "Hello world".

Χμμ εφόσον έχουμε το απλό application εάν το ορίσω σαν shell ενός χρήστη τι θα γίνει;

Έτσι λοιπόν έκανα έναν χρήστη ορίζοντας σαν shell το /bin/hello.

Κώδικας: Επιλογή όλων
sudo adduser --s /bin/hello hello


Εφόσον συμπληρώσουμε τα πεδία που λείπουν τότε προσπαθούμε να συνδεθούμε μέσω του χρήστη hello.
Κώδικας: Επιλογή όλων
sudo su hello


Και λαμβάνουμε το μύνημα "Hello world".

Χμμ εάν προσπαθήσω να συνδεθώ μέσω ssh ώς χρήστης hello τι θα συμβεί;

Μα φυσικά θα εμφανιστεί το μύνημα hello μαζί όμως με κάποια άλλα μυνήματα συστήματος.

Στο αρχικό παράδειγμα όμως δεν εμφανίζει τέτοια μυνήματα, πρέπει κάπως να τα "σιωπήσουμε" (και για κάποιο λόγο παίζει το soundtrack της ταινίας "Godfather" δεν ξέρω γιατί :?: ).

Αυτό γίνεται σχετικά εύκολα τρέχοντας:
Κώδικας: Επιλογή όλων
sudo -u hello touch /home/hello/.hushlogin


Και παίρνουμε αυτό που θέλουμε.

Όμως τώρα μου ήρθε μια ιδέα εάν τρέχει μια εφαρμογή που τρέχει σε περιβάλλον ncurses (παράθυρα σε τερματικό σε απλά Ελληνικά);

Έτσι έβαλα στο hello.c τον κώδικα που βρήκα στο http://www.tldp.org/HOWTO/NCURSES-Progr ... NDOWBASICS

εγκατέστησα την ncurses-dev
Κώδικας: Επιλογή όλων
sudo apt-get install ncursed-dev


Και το έκανα ξανά compile:

Κώδικας: Επιλογή όλων
gcc hello.c -lncurses


Και μετά ξαναμετέφερα το a.out στον φάκελο /bin:

Κώδικας: Επιλογή όλων
sudo mv a.out /bin/hello


Τώρα πλέον έχουμε μια εφαρμογή με ένα περιβάλλον λιιγο ποιο φιλικό προς τον χρήστη μέσω ssh connection.

Τώρα που μπορεί να χρησιμέψει αυτό:

Στο να έχεις μια εφαρμογή σε έναν server και να επιτρέπεις σε συγγεκριμένα άτομα και υπολογιστές να την τρέχουν χωρίς πολλά πολλά. Η εφαρμογή μπορεί να είναι το οτιδήποτε από την super secret εφαρμογή που να ελέγχει την εκτόξευση πυρινικών κεφαλών μέχρι απλά ένα trollapp που να δείχνει σε asciiart την ταινία starwars.