LinuxParty
NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.
En este artículo te vamos a demostrar como crear una jaula para un usuario, lo vamos a hacer de forma rápida y cómoda, el usuario root, es el único que puede enjaular a los usuarios, de esta forma el sistema estará mucho más seguro.
Tras identificarnos como root
su -
Creamos el usuario
adduser pajaro
passwd ******
El siguiente paso se puede hacer de muchas formas, desde editar el fichero /etc/passwd, hasta crear nuestra propia shell a través de un simple shell script, y vamos a hacer esto último:
Con nuestro editor de textos simple preferido, creamos una shell que se llamo "jaula" en /bin
gvim /bin/jaula
Y ahora le quedamos el siguiente contenido:
------------------------
#!/bin/bash
/usr/sbin/chroot /home/jaula /bin/bash
--------------------------
Le damos permisos de ejecución al fichero:
chmod a+x /bin/jaula
Opcionalmente podemos crearle una mini estructúra de directorios que pueda ejecutar una serie de aplicaicones básica, con ficheros ejecutables y librerías.
Por ejemplo, si queremos darle permisos de ejecución de bash, debemos comprobar que dependencias necesita:
root@localhost ~]# ldd /bin/bash
linux-gate.so.1 => (0x0013c000)
libtermcap.so.2 => /lib/libtermcap.so.2 (0x4ecec000)
libdl.so.2 => /lib/libdl.so.2 (0x4ee70000)
libc.so.6 => /lib/libc.so.6 (0x4ed08000)
/lib/ld-linux.so.2 (0x4e339000)
[root@localhost ~]#
Así pues, copiamos los directorios:
cp /lib/libc.so.6 /home/pajaro/lib/
Si quisieramos saber lo loalización exacta del fichero, por ejemplo "libdl" escribimos
[root@localhost ~]# whereis libdl
libdl: /usr/lib/libdl.a /usr/lib/libdl.so
[root@localhost ~]#
y crearemos la estructura similar...
mkdir /home/pajaro/usr/lib
y luego copiaremos
cp /usr/lib/libdl.so /home/pajaro/usr/lib/
Bueno, ya tenemos todo listo, aunque ahora mismo el usuario no podría hacer nada, así que le dejamos por ejemplo que pueda hacer ls y cp Para ello debemos copiar /bin/ls a /home/pajaron/bin, deberíamos comprobar de qué librerías dependen:
Como ya tenemos creada la jaula, vamos a permitirle que pueda hacer "ls" y "cp", para ello comprobamos que dependencias necesita para poder copiarselas...
ldd /bin/ls
libtermcap.so.2 => /lib/libtermcap.so.2 (0x40028000)
libc.so.6 => /lib/tls/libc.so.6 (0x42100000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40008000)
Y lo copiamos...
cp /bin/ls /home/pajaro/bin
cp /bin/cp /home/pajaro/bin
Utilizaremos la aplicación usermod, para indicarle la "shell" para el usuario pájarola siguiente forma:
usermod -s /bin/jaula pajaro.
Podríamos hacer más cositas con la jaula del usuario, pero te invitamos a que le heches un vistazo a chroot.
[ 1 ], [ 2 ], [ 3 ], [ 4 ].

Tras identificarnos como root
su -
Creamos el usuario
adduser pajaro
passwd ******
El siguiente paso se puede hacer de muchas formas, desde editar el fichero /etc/passwd, hasta crear nuestra propia shell a través de un simple shell script, y vamos a hacer esto último:
Con nuestro editor de textos simple preferido, creamos una shell que se llamo "jaula" en /bin
gvim /bin/jaula
Y ahora le quedamos el siguiente contenido:
------------------------
#!/bin/bash
/usr/sbin/chroot /home/jaula /bin/bash
--------------------------
Le damos permisos de ejecución al fichero:
chmod a+x /bin/jaula
Opcionalmente podemos crearle una mini estructúra de directorios que pueda ejecutar una serie de aplicaicones básica, con ficheros ejecutables y librerías.
Por ejemplo, si queremos darle permisos de ejecución de bash, debemos comprobar que dependencias necesita:
root@localhost ~]# ldd /bin/bash
linux-gate.so.1 => (0x0013c000)
libtermcap.so.2 => /lib/libtermcap.so.2 (0x4ecec000)
libdl.so.2 => /lib/libdl.so.2 (0x4ee70000)
libc.so.6 => /lib/libc.so.6 (0x4ed08000)
/lib/ld-linux.so.2 (0x4e339000)
[root@localhost ~]#
Así pues, copiamos los directorios:
cp /lib/libc.so.6 /home/pajaro/lib/
Si quisieramos saber lo loalización exacta del fichero, por ejemplo "libdl" escribimos
[root@localhost ~]# whereis libdl
libdl: /usr/lib/libdl.a /usr/lib/libdl.so
[root@localhost ~]#
y crearemos la estructura similar...
mkdir /home/pajaro/usr/lib
y luego copiaremos
cp /usr/lib/libdl.so /home/pajaro/usr/lib/
Bueno, ya tenemos todo listo, aunque ahora mismo el usuario no podría hacer nada, así que le dejamos por ejemplo que pueda hacer ls y cp Para ello debemos copiar /bin/ls a /home/pajaron/bin, deberíamos comprobar de qué librerías dependen:
Como ya tenemos creada la jaula, vamos a permitirle que pueda hacer "ls" y "cp", para ello comprobamos que dependencias necesita para poder copiarselas...
ldd /bin/ls
libtermcap.so.2 => /lib/libtermcap.so.2 (0x40028000)
libc.so.6 => /lib/tls/libc.so.6 (0x42100000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40008000)
Y lo copiamos...
cp /bin/ls /home/pajaro/bin
cp /bin/cp /home/pajaro/bin
Utilizaremos la aplicación usermod, para indicarle la "shell" para el usuario pájarola siguiente forma:
usermod -s /bin/jaula pajaro.
Podríamos hacer más cositas con la jaula del usuario, pero te invitamos a que le heches un vistazo a chroot.
[ 1 ], [ 2 ], [ 3 ], [ 4 ].
