chroot jako shell (nakopnete me nekdo)

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Čtvrtek Květen 11 08:33:11 CEST 2000


On Thu, 11 May 2000, Ondrej Krajicek wrote:

> Potreboval bych zadat jednomu uzivateli jako shell
> neco takoveho:
> /sbin/chroot /home/<login> /bin/bash

To nejspis nefunguje z toho duvodu, ze chroot() muze provadet pouze nekdo,
kdo ma euid 0. Toto omezeni ma ovsem velice dobry duvod, protoze jinak by
se dalo udelat nasledujici (bez naroku na uplnou spravnost, nebudu jen
kvuli tomu, abych to vyzkousel, nekde davat upraveny kernel)...

  $ cd
  $ cat > program1.c <<EOF
  #include <unistd.h>
  int main(int argc, char **argv, char *envp)
  { chroot("."); argv[0] = "sh"; execve("/bin/sh", argv, envp); }
  EOF
  $ cat > program2.c <<EOF
  #include <unistd.h>
  int main(int argc, char **argv, char *envp)
  { chroot(argv[1]); execve(argv[2], argv+3, envp); }
  EOF
  $ cc -o program1 program1.c
  $ cc -o program2 program2.c
  $ mkdir etc
  $ echo root::0:0::/:/program1 > etc/passwd
  $ cd /
  $ ~/program2 ~ ./bin/su su
  Password: (jen enter)
  # (uz je to tady!)

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux