CVS - теперь банановый (chrooted)
Feb. 27th, 2003 02:32 pmЗаставил-таки CVS работать через SSH в chrooted environment-е.
Решение для OpenSSH нашлось в виде забавного хака:
Работает это так - если homedir юзера указан в виде "/data/chrooted/./home/vasya", то sshd выполняет chroot("/data/chrooted"), а уже там homedir-ом считает /home/vasya
Решение для OpenSSH нашлось в виде забавного хака:
#ifdef CHROOT
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;
}
#endif /* CHROOT */
Работает это так - если homedir юзера указан в виде "/data/chrooted/./home/vasya", то sshd выполняет chroot("/data/chrooted"), а уже там homedir-ом считает /home/vasya