2009-10-17

Creación y Control de Usuarios desde Consola

Muchas veces debes crear usuarios para una función o aplicación determinada pero no quieres que este usuario pueda hacer otras cosas, por ejemplo creas un usuario para un acceso a ftp pero no quieres que este usuario se pueda loguar al sistema por ssh, para esto en Linux existen los diferentes shell, que son como a los comando o aplicaciones que tu puedes usar, entonces para seguir con ejemplo del ftp vamos a ver como se crearia el usuario

root@localhost:~# adduser -g ftp -d /home/ftp/usuario -s /bin/false usuario

Con esto tenemos las siguientes características

-g Lo adicionamos a un grupo especifico, en este caso ftp
-d Le indicamos que directorio queremos que use y no que nos cree uno.
-s Le decimos que shell va a usar para que no nos asigne el de por defecto

Entonces para el control de que deseamos que se pueda o no hacer para cada usuario lo fundamental es saber que shell le asignamos, en Linux los shell que tienes disponibles son

/sbin/nologin, programa que de forma cortés rechaza el ingreso en el sistema (login).

/bin/false, programa que realiza salida inmediata indicando falla. Es decir, que no permite la realización de cosa alguna y además con falla. Ideal si se quiere tener cuentas de usuario con acceso hacia FTP, correo, Samba, etc., aunque sin permitir el acceso hacia un intérprete de mandatos.

/dev/null, el dispositivo nulo que descarta todos los datos escritos sobre éste y no provee datos para cualquier proceso que lo lea. Ideal para definirse cuando se quiere utilizar una cuenta que sólo tenga acceso a correo (SMTP, POP3, IMAP y/o cliente de correo con interfaz HTTP).

/bin/bash, intérprete de mandatos desarrollado por el proyecto GNU. Es el intérprete de mandatos predefinido en Linux y Mac OS X (a partir de Tiger).

/bin/sh, un enlace simbólico que apunta hacia /bin/bash y ofrece una versión simplificada de Bash muy similar a Bourne Shell (sh).

/bin/tcsh, una versión mejorada del de mandatos de C (csh).

Estas características de los shell las saque de un excelente libro llamado Alcance Libre, escrito por el señor Joel Barrios, es excelente y existe en versión digital solo deben buscarlo se los recomiendo.

Bueno entonces ya sabiendo eso decides segun tus necesidades cual le asignas a acá usuario, pero tiene un pequeña trampita para que funcionen como deseas, la trampita esta en que te tienes que fijar que esten en el archivo /etc/shells, por defecto en Ubuntu viene así

root@localhost:~# more /etc/shells
# /etc/shells: valid login shells
/bin/csh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/esh
/usr/bin/screen
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/bin/false


Entonces revisas que este hay y listo, espero que les sirva