Tarkoituksena asentaa ubuntuun sftp-palvelu vierailevalle käyttäjälle jolloin käyttäjä ei pääse seikkailemaan ssh-yhteydellä koneeseen konsolitilassa.
Myöskään sftp:llä ei pääse kuin chroot-hakemistoon.
Oletuksena on että sshd on asennettu ja koneeseen pääsee ssh:lla.
Toimitaan root-käyttäjän oikeuksin asennusta tehdessä esim. sudo bash käskyllä.
#Lisätään ensin vieras käyttäjä järjestelmään komentorivillä
useradd -s /bin/bash vieras
#Annetaan salasana vieras käyttäjälle
passwd vieras
Testaa että pääset ssh:lla koneeseen sisälle esim. ssh vieras@localhost käskyllä
Muokkaa sshd-asetuksia jotta koneeseen ei pääse kuin halutuilla käyttäjätunnuksilla
nano /etc/ssh/sshd_config
#Lisää alla oleva rivi esim. seuraavaan malliin
AllowUsers omatunnus1 vieras omatunnus2
#Poistu editorista ja käynnistä sshd-uudelleen
/etc/init.d/sshd restart
#Kokeile että sftp-toimii normaalisti vieras käyttäjällä.
#esim. sftp vieras@koneennimi
#Tämän jälkeen asennetaan rssh-shell
apt-get install rssh
#Itse jouduin ajamaan tämän jälkeen vielä reconfiguren koska install-ohjelma ei kysynyt SUID bit:n asetusta helpper skriptiin
dpkg-reconfigure rssh
#Vastaa alkukysymykseen OK ja sen jälkeen kysytään
If you plan to use chroot jails for the users using rssh, the program /usr/bin/rssh_chroot_helper has to be installed with the SUID bit set, with the root as user.
Huom !!!! Tähän vastataan YES
#Lisätään /usr/bin/rssh shells tiedostoon
# editoidaan shelss tiedostoa
nano /etc/shells
Lisää viimeisen rivin jälkeen
/usr/bin/rssh
Talleta ja poistu
#Muutetaan vieras käyttäjän shelli
usermod -s /usr/bin/rssh vieras
#Tehdään hakemisto johon halutaan että vieras käyttäjä rajoittuu. Itse tein näin
mkdir /chroot
#Vaihdetaan hakemisto
cd /usr/share/doc/rssh/examples/
#Puretaan chroot-skripti ja annetaan ajo-oikeudet
gunzip mkchroot.sh.gz
chmod u+x mkchroot.sh
#Alla oleva käsky luo chrootin vaatimat tiedosto /chroot kansioon
./mkchroot.sh /chroot
#Luodaan kotihakemisto vieras käyttäjälle ja annetaan käyttäjäoikeudet
mkdir /chroot/home
mkdir /chroot/home/vieras
chown -R vieras.users /chroot/home/vieras
#Poista chrootin etc/passwd tiedosto jotta
#vieras käyttäjä ei saa udeltua systeemin käyttäjätunnuksia
#En tiedä miksi chroottiin passwd-tiedosto kopioidaan sillä sisäänkirjautuessa käytetään kuitenkin
#virallisen systeemin /etc/passwd:tä. Tämä on bugi-mutta #siitä viis.
rm -rRf /chroot/etc/passwd
#Editoidaan /etc/rssh.conf tiedostoa
nano /etc/rssh.conf tiedosta
#alla on esimerkki omastani
# This is the default rssh config file
logfacility = LOG_USER
#allowscp
allowsftp
#allowcvs
#allowrdist
#allowrsync
# set the default umask
umask = 022
chrootpath = "/chroot"
#spaces in the path must be quoted...
#user=rudy:011:00001:"/usr/local/chroot dir" # scp with chroot
user=vieras:011:00010:"/chroot" # sftp with chroot
#rssh.conf tiedosto loppuu
#Editoidaan vieras-käyttäjän kotihakemiston polku
usermod -d /chroot/home/vieras vieras
#Käynnistä vielä varuilta sshd-uudelleen
/etc/init.d/ssh restart
Tämän jälkeen voit kokeilla joltain muulta koneelta kirjautumista vaikka komentoriviltä
sftp vieras@koneennimi