jueves, 7 de febrero de 2008

Usando sudo para otorgar permisos


¿Que se puede hacer si un usuario desea ejecutar algunos comando que no le están permitidos?
Algo que requiera los derechos que solo el root tiene?
Parece ese caso la respuesta es sudo, con sudo podemos dar permisos que el usuario necesita sin dejarle la contraseña de root y limitar las operaciones de este.

Con sudo (superuser do), podemos delegar limitadas responsabilidades de administración a los usuarios, ademas de que nos permite hacer una auditoria de lo que los usuarios hacen o intentan hacer. también podemos limitarles solo a los comando que solo uno que quiere que ejecuten, y tenemos la seguridad de que cuando la consola esta sin uso por un tiempo se desactiva la función sudo. Muchos quizás usen sudo cuando están en Ubuntu.


Configuración
sudo viene en la mayoría de distribuciones de Linux.
Para configurarlo debemos editar el archivo /etc/sudoers

Para editarlo ejecutar como root:
visudo /etc/sudoers

El formato de este archivo es simple, solo hay que recordar que el símbolo numeral (#) se usan para comentar una linea.

Bien estas son las opciones que podemos configurar:

  • User Alias: especifica un alias para un usuario o un grupo de usuarios. Un usuario puede aparecer en varios alias.

  • "Run as" Alias: especifica que otros usuarios puede trabajar el usuario sudo. Por defecto sudo implica al el usuario root, pero uno puede ejecutarlo como otro usuario.

  • Host Alias: especifica el host donde se aplicaran los derechos. Esto no lo usaras a menos que administres varias PCs con Linux.

  • Command Alias: especifica un sinónimo para un comando especifico. Por ejemplo, es mas fácil escribir APT que la ruta completa /usr/sbin/apt-get.
Después de esta sección, esta la sección para los derechos específicos, el cual luce mas o menos así
USUARIO COMANDO O ALIAS.

Usuario puede ser cualquier usuario y comando es el comando al cual se le da permiso o el alias del comando.
Puedes especificar otras opciones como por ejemplo, NOPASSWD, para permitir al usuario ejecutar sudo sin necesidad de ingresar su contraseña.

Aquí dejo un ejemplo de un archivo de configuración tomado de un manual en ingles, pero para mas informacion es bueno revisar el manual sudoers (man sudoers)


# Ejemplo /etc/sudoers file, con disculpas a la compañía Disney!
#

# Alias de Usuarios
# La primera linea crea un alias para 3 usuarios específicos.
# La segunda incluye a todos los usuarios del grupo "patos", pero excluye a "donald"
# La tercera crea un alias solo para un usuario; esto podría ser útil en el futuro

#
User_Alias NEPHEWS = huey, dewey, louie
User_Alias ALL_PATOS_SIN_DONALD = %patos, !donald
User_Alias MICKEY = mickey_mouse

# Alias de comandos

Cmnd_Alias HALT_OR_REBOOT = /sbin/halt
Cmnd_Alias KILL = /usr/bin/killall
Cmnd_Alias SHUTDOWN = /sbin/shutdown
Cmnd_Alias SU = /bin/su

# Los derechos: quien recibe para ejecutar que

# Una regla común: root y los usuarios del grupo "wheel" tienen todos los derechos
root ALL = (ALL) ALL
%wheel ALL = (ALL) ALL

# Supón que mickey es un administrador; se le da permisos para ejecutar sudo sin contraseña
MICKEY ALL = NOPASSWD: ALL

# NEPHEWS pueden apagar la PC
NEPHEWS HALT_OR_REBOOT, SHUTDOWN



Si deseas puedes agregarle algunas lineas extras de configuración al final del archivo.

Ten cuidado
Cuando das permiso a un usuario debes de tener cuidado, por que cuando a un usuario le das permisos de su le estas dando permiso de root.
Por ejemplo si a un usuario le das permiso para ejecutar sudo less este podría usar el comando ! y correr otro usuario como root. Por seguridad antes de otorgar permisos, seria bueno revisar la pagina del instituto SAN.

Mas informacion en Linux.com.

No hay comentarios: