Estas en: Home > sesión

Entradas etiquetadas con sesión

Comando screen en Linux: Guía completa y ejemplos de uso

0

Introducción

El comando screen en Linux es una herramienta poderosa que permite a los usuarios manejar múltiples sesiones de terminal dentro de una sola ventana de terminal. Esto es especialmente útil para los administradores de sistemas y desarrolladores que necesitan ejecutar múltiples tareas simultáneamente y mantenerlas funcionando incluso cuando cierran la sesión de su sistema.

Instalación

En la mayoría de las distribuciones de Linux, screen se encuentra disponible en los repositorios oficiales. Para instalarlo, se pueden usar los siguientes comandos según la distribución:

En Debian/Ubuntu y derivados:

sudo apt-get install screen

En Red Hat/CentOS y derivados:

sudo yum install screen

En Fedora:

sudo dnf install screen

Uso Básico

Iniciar una sesión de screen

Para iniciar una nueva sesión de screen, simplemente escribe:

screen

Esto abrirá una nueva ventana de terminal dentro de screen. Puedes comenzar a trabajar normalmente dentro de esta sesión.

Separar (detach) y reanudar (reattach) una sesión

Una de las características más útiles de screen es la capacidad de separar una sesión y luego reanudarla. Esto es particularmente útil si necesitas desconectarte del sistema pero deseas que tus procesos continúen ejecutándose.

Para separar una sesión activa, presiona:

Ctrl + A y luego D

Esto te devolverá a la terminal original, mientras que la sesión de screen continuará ejecutándose en segundo plano.

Para listar todas las sesiones de screen disponibles, usa:

screen -ls

Verás una lista de todas las sesiones activas, similar a esta:

There is a screen on:
    12345.pts-0.hostname    (05/19/24 12:34:56)    (Detached)
1 Socket in /run/screen/S-username.

Para reanudar una sesión específica, usa el siguiente comando seguido del ID de la sesión (en este caso, 12345):

screen -r 12345

Crear una nueva sesión con un nombre específico

Asignar nombres a tus sesiones puede facilitar su gestión, especialmente cuando tienes múltiples sesiones activas. Para crear una nueva sesión con un nombre específico, usa:

screen -S nombre_sesion

Por ejemplo:

screen -S desarrollo

Dividir la pantalla

screen también permite dividir la pantalla en múltiples regiones. Para dividir la pantalla horizontalmente, usa:

Ctrl + A y luego S

Para dividir la pantalla verticalmente, usa:

Ctrl + A y luego |

Para cambiar entre las regiones, usa:

Ctrl + A y luego Tab

Para cerrar una región, navega a ella y usa:

Ctrl + A y luego Q

Comandos de screen

Dentro de screen, puedes usar una variedad de comandos para gestionar tus sesiones y regiones. Aquí hay una lista de comandos comunes:

  • Ctrl + A seguido de C: Crear una nueva ventana.
  • Ctrl + A seguido de N o P: Navegar a la siguiente o anterior ventana.
  • Ctrl + A seguido de ": Listar todas las ventanas.
  • Ctrl + A seguido de K: Cerrar la ventana actual.

Enviar comandos a screen

Puedes enviar comandos directamente a una sesión de screen desde fuera de la misma. Por ejemplo, para enviar un comando a una sesión específica, usa:

screen -S nombre_sesion -X comando

Por ejemplo, para enviar el comando ls a una sesión llamada desarrollo, usa:

screen -S desarrollo -X stuff "ls\n"

Ejemplo de uso práctico

Supongamos que estás ejecutando un servidor en tu máquina local y necesitas mantenerlo funcionando incluso después de cerrar la terminal. Aquí hay un ejemplo de cómo podrías hacerlo usando screen:

  1. Inicia una nueva sesión de screen y nómbrala servidor: screen -S servidor
  2. Dentro de esta sesión, inicia tu servidor (por ejemplo, un servidor Python simple): python3 -m http.server
  3. Separa la sesión para mantener el servidor funcionando en segundo plano: Ctrl + A y luego D
  4. Cierra tu terminal o desconéctate del sistema. El servidor seguirá ejecutándose.
  5. Cuando necesites volver a esta sesión, reanúdala: screen -r servidor

Conclusión

El comando screen es una herramienta versátil y esencial para cualquier usuario de Linux que maneje múltiples tareas en la terminal. Con screen, puedes crear, separar y reanudar sesiones, así como dividir tu pantalla para una mayor productividad. Conocer y utilizar screen puede mejorar significativamente tu eficiencia al trabajar en un entorno de línea de comandos.

Symfony: El controlador (III)

0

SEGURIDAD DE LA ACCIÓN

Con Symfony podemos controlar quién puede acceder a una acción concreta, utilizando para ello las herramientas de identificación de usuarios que el framework nos provee.

Una acción segura sólo podrá ser ejecutada por un usuario registrado y que tenga la acreditación para ello.

  • Las acciones seguras requieren que los usuarios estén autenticados.
  • Las credenciales son privilegios de seguridad agrupados bajo un nombre y que permiten organizar la seguridad en grupos.

[codesyntax lang=»text» title=»Estableciendo restricciones de acceso, en apps/frontend/modules/mimodulo/config/security.yml»]

ver:
  is_secure:   off       # Todos los usuarios pueden ejecutar la acción "ver"

modificar:
  is_secure:   on        # La acción "modificar" es sólo para usuarios autenticados

borrar:
  is_secure:   on        # Sólo para usuarios autenticados
  credentials: admin     # Con credencial "admin"

all:
  is_secure:  off        # off es el valor por defecto

[/codesyntax]

 

Lo que sucede cuando un usuario trata de acceder una acción restringida depende de sus credenciales:

  • Si el usuario está autenticado y tiene las credenciales apropiadas, entonces la acción se ejecuta.
  • Si el usuario no está autenticado, es redireccionado a la acción de login.
  • Si el usuario está autenticado, pero no posee las credenciales apropiadas, será redirigido a la acción segura por defecto.

Las páginas login y secure son bastante simples, por lo que seguramente será necesario personalizarlas. Se puede configurar que acciones se ejecutan en caso de no disponer de suficientes privilegios en el archivo settings.yml de la aplicación cambiando el valor de las propiedades:

[codesyntax lang=»text» title=»Las acciones de seguridad por defecto se definen en apps/frontend/config/settings.yml»]

all:
  .actions:
    login_module:  default
    login_action:  login

    secure_module: default
    secure_action: secure

[/codesyntax]

 

OTORGANDO ACCESO

Los métodos utilizados para permitir acceso a una acción segura se encuentran en el objeto sfUser. El estado identificado se establece con setAuthenticated() y se puede comprobar con isAuthenticated():

[codesyntax lang=»php» title=»Estableciendo el estado de autenticación del usuario»]

<?php

class miCuentaActions extends sfActions
{
  public function executeLogin($peticion)
  {
    if ($peticion->getParameter('login') == 'valor')
    {
      $this->getUser()->setAuthenticated(true);
    }
  }

  public function executeLogout()
  {
    $this->getUser()->setAuthenticated(false);
  }
}

[/codesyntax]

Las credenciales son un poco más complejas de tratar, ya que se pueden verificar, agregar, quitar y borrar:

[codesyntax lang=»php»]

<?php

class miCuentaActions extends sfActions
{
  public function executeEjemploDeCredenciales()
  {
    $usuario = $this->getUser();

    // Agrega una o más credenciales
    $usuario->addCredential('parametro');
    $usuario->addCredentials('parametro', 'valor');

    // Verifica si el usuario tiene una credencial
    echo $usuario->hasCredential('parametro');                         => true

    // Verifica si un usuario tiene una de las credenciales
    echo $usuario->hasCredential(array('parametro', 'valor'));         => true

    // Verifica si el usuario tiene ambas credenciales
    echo $usuario->hasCredential(array('parametro', 'valor'), true);   => true

    // Quitar una credencial
    $usuario->removeCredential('parametro');
    echo $usuario->hasCredential('parametro');                         => false

    // Elimina todas las credenciales (útil en el proceso de logout)
    $usuario->clearCredentials();
    echo $usuario->hasCredential('valor');                             => false
  }
}

[/codesyntax]

Las credenciales se pueden utilizar también para mostrar contenido autenticado en una plantilla:

[codesyntax lang=»php»]

<?php

<ul>
  <li><?php echo link_to('seccion1', 'content/seccion1') ?></li>
  <li><?php echo link_to('seccion2', 'content/seccion2') ?></li>
  <?php if ($sf_user->hasCredential('seccion3')): ?>
  <li><?php echo link_to('seccion3', 'content/seccion3') ?></li>
  <?php endif; ?>
</ul>

[/codesyntax]

 

CREDENCIALES COMPLEJAS

a sintaxis YAML utilizada en el archivo security.yml permite restringir el acceso a usuarios que tienen una combinación de credenciales, usando asociaciones de tipo AND y OR. Con estas combinaciones, se pueden definir flujos de trabajo y sistemas de manejo de privilegios muy complejos — como por ejemplo, un sistema de gestión de contenidos (CMS) cuya parte de gestión sea accesible solo a usuarios con credencial admin, donde los artículos pueden ser editados solo por usuarios con credenciales de editor y publicados solo por aquellos que tienen credencial de publisher:

[codesyntax lang=»text»]

editarArticulo:
  credentials: [ admin, editor ]              # admin AND editor

publicarArticulo:
  credentials: [ admin, publisher ]           # admin AND publisher

gestionUsuarios:
  credentials: [[ admin, superuser ]]         # admin OR superuser

[/codesyntax]

Cada vez que se añade un nuevo nivel de corchetes, la lógica cambia entre AND y OR. Así que se pueden crear combinaciones muy complejas de credenciales, como la siguiente:

[codesyntax lang=»text»]

credentials: [[root, [supplier, [owner, quasiowner]], accounts]]
             # root OR (supplier AND (owner OR quasiowner)) OR accounts

[/codesyntax]

 

CONFIGURACIÓN DEL MÓDULO

Algunas características de los módulos dependen de la configuración. Para modificarlas, se debe crear un archivo module.yml en el directorio config/ y se deben definir parámetros para cada entorno (o en la sección all: para todos los entornos).

[codesyntax lang=»text» title=»Configuración del módulo, en apps/frontend/modules/mimodulo/config/module.yml»]

all:                  # Para todos los entornos
  enabled:            true
  is_internal:        false
  view_class:         sfPHP
  partial_view_class: sf

[/codesyntax]

El parámetro enabled permite desactivar todas las acciones en un módulo. En ese caso, todas las acciones se redireccionan a la acción module_disabled_module/module_disabled_action (tal y como se define en el archivo settings.yml).

El parámetro is_internal permite restringir la ejecución de todas las acciones de un módulo a llamadas internas. Esto es útil por ejemplo para acciones de envío de correos electrónicos que se deben llamar desde otras acciones para enviar mensajes de e-mail, pero que no se deben llamar desde el exterior.

El parámetro view_class define la clase de la vista. Debe heredar de sfView. Sobreescribir este valor permite utilizar otros sistemas de generación de vistas con otros motores de plantillas, como por ejemplo Smarty.

El parámetro partial_view_class define la clase de la vista que se emplea para los elementos parciales de este módulo. La clase indicada debe heredar de sfPartialView.

Ir arriba