Ovde se nadovezujemo na tekst o podešavanju CHROOT-a na FreeBSD:FreeBSD OpenSSH CHROOT
OpenBSD zahteva za nijansu drugačije korake. Iako su rekli da je zakrpa koja omogućava chroot ubačena to nije tačno jer čitanje ”.” u putanji ne radi dok sami ne dodate zakrpu koja sledi. No, to nije teško. Pretpostavimo da imate najnoviji OpenBSD (4.1). Vreme je da stavimo novu verziju OpenSSH-a na njega. Svoj paket možete naći na http://www.openssh.org/openbsd.html Tamo ćete naći i uputstvo koje kaže sledeće:
cd /usr/src/usr.bin tar xvfz .../openssh-4.6.tar.gz cd ssh make obj make cleandir make depend make make install
I dodajte ispred funkcije do_setusercontext sledeći kod:
/* do chroot */
void
do_chroot(struct passwd *pw){
char *user_dir;
char *new_root;
user_dir = xstrdup(pw->pw_dir);
new_root = user_dir + 1;
while((new_root = strchr(new_root, '.')) != NULL) {
new_root--;
if(strncmp(new_root, "/./", 3) == 0) {
*new_root = '\0';
new_root += 2;
if(chroot(user_dir) != 0)
fatal("Couldn't chroot to user directory %s", user_dir);
pw->pw_dir = new_root;
break;
}
new_root += 2;
}
}
/* do_chroot */
Zatim dodajte:
/* Set login name, uid, gid, and groups. */
void
do_setusercontext(struct passwd *pw)
{
/* OVO DODAJETE */
do_chroot(pw);
/* OVO DODAJETE */
if (getuid() 0 || geteuid() 0) {
#ifdef HAVE_LOGIN_CAP
Naznačio sam vam šta tačno dodajete. Ono ispred i iznad mog komentara je tu da lakše nađete tačnu lokaciju za dodatnu funkciju.
I sad se vratite koracima za instalaciju OpenSSH-a. Sve bi trebalo da prođe OK. Restartujete OpenSSH server a ostatak je isti kao kod FreeBSD-a.
NAPOMENA: Ovo ima smisla samo ako je korisnik na sistem ušao preko SSH veze. Ukoliko ima fizički pristup mašini onda chroot ne radi.
Autor: Marko Milenović http://rehash.eccegeek.info