Ejecute un comando en el inicio de sesión del usuario

23

En el sistema de escritorio Linux, quiero ejecutar un comando cuando el usuario inicia sesión.

Después de leer algunas otras publicaciones, intenté insertar el comando ~/.bashrcpero sin éxito. Además, el sistema utiliza una interfaz gráfica para el inicio de sesión del usuario, por lo que el comando no debe estar relacionado con el inicio de un shell.

También intenté agregar el comando a uno de los scripts contenidos /etc/profile.dsin resultados.

Hay otra manera de hacer esto? ¿Algún archivo que el sistema lee después del inicio de sesión?

BowPark
fuente
askubuntu.com/questions/48321/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Respuestas:

21

No hay garantía de que el administrador de pantalla gráfica lea los archivos de inicio clásicos. Esto cambia entre distribuciones y entre administradores de pantalla. Sin embargo, uno de los siguientes debería funcionar.

  1. Use el método nativo de su entorno de escritorio para configurar aplicaciones de inicio. Los detalles dependerán del DE que esté utilizando, pero puede crear un script que ejecute su comando y agregarlo a la lista de aplicaciones de inicio. Por ejemplo, en mi sistema (Cinnamon), puede hacerlo a través de "Configuración del sistema" => "Aplicaciones de inicio".

  2. Uso ~/.xprofile, esto proviene de al menos los administradores de inicio de sesión GDM, LDM, LightDM y LXDM.

  3. Si ninguno de los anteriores funciona, intente agregar el comando a ~/.profile: Este es el archivo de inicialización principal para shells de inicio de sesión y también es leído por algunos shells gráficos al iniciar sesión.

  4. Como señaló @derobert en los comentarios, también puede usar los estándares de escritorio gratuitos :

    Los directorios de inicio automático son $ XDG_CONFIG_DIRS / autostart como se define de acuerdo con la sección "Referencia a esta especificación" en la "especificación del directorio base del escritorio".

    Si el mismo nombre de archivo se encuentra en varios directorios de inicio automático, solo se debe utilizar el archivo en el directorio más importante.

    Ejemplo: si $ XDG_CONFIG_HOME no está configurado, el directorio de inicio automático en el directorio de inicio del usuario es ~ / .config / autostart /

    Ejemplo: si $ XDG_CONFIG_DIRS no está configurado, el directorio de inicio automático de todo el sistema es / etc / xdg / autostart /

    Ejemplo: si $ XDG_CONFIG_HOME y $ XDG_CONFIG_DIRS no están configurados y los dos archivos /etc/xdg/autostart/foo.desktop y ~ / .config / autostart / foo.desktop existen, entonces solo el archivo ~ / .config / autostart / foo. el escritorio se usará porque ~ / .config / autostart / es más importante que / etc / xdg / autostart /

El ~/.bashrces completamente irrelevante aquí, sólo es leído por conchas interactivo de no ingreso, por lo que se ignora en shells de entrada, gráfica o no.

terdon
fuente
55
Es posible que desee mencionar ~/.config/autostarty /etc/xdg/autostart/cuáles son las ubicaciones estándar de acuerdo con la especificación de inicio automático de la aplicación de escritorio . Y también /etc/X11/Xsession.dy ~/.xsession.
derobert
6

Otra opción es usar pam; esto le dará una forma precisa de definir acciones de inicio de sesión.

Para una acción genérica, puede confiar en pam_exec ( http://manpages.ubuntu.com/manpages/hardy/man8/pam_exec.8.html ). Sin embargo, si necesita realizar una acción más específica de manera segura, es posible que existan módulos de pam más especializados que se ajusten mejor, como pam_mount de uso común (para montajes al iniciar sesión: http: //manpages.ubuntu. com / manpages / hardy / man8 / pam_mount.8.html ) o pam_echo (para mensajes arbitrarios a los usuarios: http://manpages.ubuntu.com/manpages/hardy/man8/pam_echo.8.html ).

En general, pam es un sistema muy ordenado para personalizar los inicios de sesión, por lo que es posible que desee analizarlo un poco más, en lugar de confiar en secuencias de comandos potencialmente inseguras, como otros sugirieron.

Ejemplo

Dado un /etc/pam.d/system-auth bastante típico, podemos emplear pam_exec después de iniciar sesión de esta manera:

session         optional        pam_ssh.so
session         required        pam_limits.so
session         required        pam_env.so
session         optional        pam_mktemp.so
session         required        pam_unix.so
session         optional        pam_exec.so /usr/local/bin/my_prog
session         optional        pam_permit.so

donde /usr/local/bin/my_progse ejecuta un programa arbitrario después de un inicio de sesión de usuario exitoso.

Oakad
fuente
2
Esta es una buena respuesta, aunque debe incluir un ejemplo de la línea en la que agregaría la pamconfiguración, ya que no es trivial.
Graeme
2

De acuerdo con este tema: ¿ Ejecutar comando automáticamente después de iniciar sesión?

Tiene la solución de .bashrc(no lo que necesita) y la solución de las aplicaciones de inicio. Cito a Daniel S .:

gnome-session-properties se puede usar para configurar aplicaciones de inicio.

Además, si desea que una aplicación se ejecute en el arranque del sistema, puede agregar una regla como la siguiente a su crontab (edite crontab con crontab -e):

@reboot /run/this/program/at/boot >/dev/null 2>&1
Laurent C.
fuente