El libre pensamiento para un internet libre

No estas registrado.  

Anuncio

Wifi-libre.com: El libre pensamiento para un internet libre / Regístrese ahora

#1 20-09-2018 22:54:40

javierbu
Usuario

Registrado: 09-08-2018
Mensajes: 67

script bash pasar de superuser a user normal

Hola

Estoy haciendo un peque;o script en bash que requiere permisos de superusuario, pero en un punto del script, ejecuta otro script que no requiere permisos de superusuario, y al ejecutarlo como superusuario, me crea un lanzador en el escritorio que no puedo ejecutar con mi user por ser propiedad de root.

Si ejecuto el script por separado del mio sin permisos de super, funciona perfectamente y crea el lanzador como debe.

Como puedo hacer para ejecutar solo ese script como usuario normal desde mi script que requiere permisos de superuser?

Espero se entienda bien.

Gracias de antemano

Desconectado

Anuncio

Wifi-libre.com: El libre pensamiento para un internet libre / Regístrese ahora

#2 20-09-2018 23:32:18

crash
Expulsado

Registrado: 25-10-2017
Mensajes: 1,049

Re: script bash pasar de superuser a user normal

yo usaría para ser root

sudo -i

después para desloguearme de root y usar el usuario normal. usaría

logout

sin ver un ejemplo del script de como lo estas montando es lo mas que puedo decirte.

Desconectado

#3 21-09-2018 00:02:06

javierbu
Usuario

Registrado: 09-08-2018
Mensajes: 67

Re: script bash pasar de superuser a user normal

Hola Crash y gracias.

El script es muy sencillo. solo instala unas dependencias, se baja un .tar, lo descomprime, y ejecuta un  script dentro que viene dentro del tar.

Basicamente hace algo asi.

apt-get install X
wget archivo.tar
tar -xf archivo.tar
bash archivo/script

El script que se ejcuta en la ultima linea, que no puedo tocar, no necesita permisos. Entre otras cosas, me crea un lanzador en el escritorio. Al ejecutarlo desde mi script, que si requiere permisos, ese lanzador es propiedad de root y no funciona. Podria darle permisos desde mi script, pero esa no es al idea, la idea es que el script se ejecute sin permisos de super dentro de mi script.

No entiendo a lo que te refieres con sudo -i. mi script no lo puedo ejecutar asi, y si lo quiero ejecutar desde mi script, no sabria como hacerlo.

la salida de logout

bash: logout: no es un shell de entrada: use `exit'

Desconectado

#4 21-09-2018 00:33:46

crash
Expulsado

Registrado: 25-10-2017
Mensajes: 1,049

Re: script bash pasar de superuser a user normal

a esto me refiero que lo puedes usar dentro del script.

[email protected]:~$ whoami 
aries
[email protected]:~$ sudo -i
[sudo] contraseña para aries: 
[email protected]:~# whoami
root
[email protected]:~# logout
[email protected]:~$ 

hay una parte que no me queda clara.
El script para que haga todo el proceso ¿lo usas como usuario normal o como root?
si lo usas como root desde que lo ejecutas el problema lo tienes ahí.

lo suyo en ese caso es usar sudo dentro del script en la parte que lo use.

sudo apt-get install X 
wget archivo.tar
tar -xf archivo.tar
bash archivo/script

si te das cuenta solo le doy permisos de root con sudo a la instalación de apt-get. el resto del script se ejecuta como el usuario con el que a sido lanzado.

puedes mirar si quieres mi script de actualizaciones de crack-keys que es mas o menos lo que tu quieres, y lo ejecuto como usuario normal hasta que me pide el password para hacer cosas de root.
https://www.wifi-libre.com/topic-912-cr … tml#p11471

Ultima edición por crash (21-09-2018 01:07:28)

Desconectado

#5 21-09-2018 00:58:47

javierbu
Usuario

Registrado: 09-08-2018
Mensajes: 67

Re: script bash pasar de superuser a user normal

La prueba que hago es haciendo sudo -i en mi consola y despues ejecuto mi script.

El primer problema es que me manda a /root/ y eso me complica de nuevo a la hora de dar las instrucciones para usar el script que estoy haciendo.

Y luego, cuando el scriot llega a logout, me tira lo mismo que ya puse antes.

bash: logout: no es un shell de entrada: use `exit'

(estoy usando xubuntu para hacer las pruebas. La idea es que ande en todos los ubuntus)

Si meto sudo -i en el script, se autologuea a root y se queda ahi el script, con el promtp de root. no hace nada.

Desconectado

#6 21-09-2018 11:32:12

kcdtv
Administrator

Registrado: 14-11-2014
Mensajes: 4,572

Re: script bash pasar de superuser a user normal

Generalmente no se recomienda usar sudo a dentro de los scripts... Se ejecutan con sudo.
sudo -i es peor que sudo en tu caso por lo que dices: La terminal se sitúa automáticamente en root mientras que con sudo se queda en la locación de originen.
El problema con tu idea es que tendrás que entrar tu contraseña de usuario una segunda vez... Puedes hacer

apt-get install X
wget archivo.tar
tar -xf archivo.tar
su javierbu
bash archivo/script

Con su + jevierbu antes de lanzar el otro script vuelves a ser "javierbu" pero tendrás que entrar la contraseña de javierbu. tongue
¿Por qué no añades una linea chmod en tu script para que de permisos de ejecución del archivo desktop a los usuarios?

Desconectado

#7 21-09-2018 17:38:34

javierbu
Usuario

Registrado: 09-08-2018
Mensajes: 67

Re: script bash pasar de superuser a user normal

Hola Kcdtv.

El poner su javier (mas bien le digo algo como "su `who | cut -d " " -f 1`", ya que no se el usuario), es lo primero que intente. No me pide el password de javier al venir desde root, pero el script me muestra el prompt del usuario javier y se queda atascado hasta que le doy un exit, y continua el script su curso. Eso complicaria la vida a la mayoria de users.

¿Por qué no añades una linea chmod en tu script para que de permisos de ejecución del archivo desktop a los usuarios?

Esto me complica la vida por varios motivos:

En primer lugar, el script que necesito que se ejecute como user normal, hace varias cosas (lanzador en escritorio, lanzador en menu de programas y algo mas) y supongo que dependiendo de cada entorno de escritorio, Kde, xfce, gnome, etc, usara una ruta u otra. Depurar el script para que busque todas en todas las rutas posibles seria un infierno.

Y en segundo lugar, de esa manera estaria siempre dependiendo del script que no puedo tocar. Hoy tengo problemas con el lanzador del escritorio, pero quien sabe si ma;ana tambien los tendre con el lanzador del menu de programas, o con cualquier otra accion que haga el script. Este script puede cambiar sin previo aviso. Lo ideal es ejecutarlo como user sin privilegios, pero veo que no es tarea sencilla.

Mas bien quiza lo mas sencillo sera poner en las instrucciones de instalacion un paso mas para ejecutar el dichoso script sin privilegios. A menos que haya otra solucion viable.

Desconectado

#8 21-09-2018 18:47:46

javierbu
Usuario

Registrado: 09-08-2018
Mensajes: 67

Re: script bash pasar de superuser a user normal

Un ejemplo de lo que dices, kcdtv...

[email protected]:~$ cat prueba.sh 
#!/bin/bash

su javier
whoami

exit
[email protected]:~$ sudo bash prueba.sh 
[sudo] contraseña para javier: 
[email protected]:~$ exit <---- este lo escribo yo a mano. si no, el script se queda ahi.
exit
root


[email protected]:~$ 

Desconectado

#9 21-09-2018 20:00:25

kcdtv
Administrator

Registrado: 14-11-2014
Mensajes: 4,572

Re: script bash pasar de superuser a user normal

, hace varias cosas (lanzador en escritorio, lanzador en menu de programas y algo mas) y supongo que dependiendo de cada entorno de escritorio, Kde, xfce, gnome, etc, usara una ruta u otra.

Ambas rutas son las mismas.

Lo ideal es ejecutarlo como user sin privilegios, pero veo que no es tarea sencilla

Puedes definir un alis así

alias x='sudo bash /ruta/script1 ; bash /ruta/script2'

El primer script se ejecuta con sudo (la cosa tuya con apt) y el segundo se ejecutará sin sudo.

Desconectado

#10 21-09-2018 20:38:41

javierbu
Usuario

Registrado: 09-08-2018
Mensajes: 67

Re: script bash pasar de superuser a user normal

kcdtv escribió:

Ambas rutas son las mismas.

No lo he comprobado en otros entornos fuera de xfce, que es el que estoy usando para mis pruebas. Pero ya solo con el idioma en que tenga el sistema, cambia la ruta. escriorio|desktop por ejemplo. Supongo que se podria arreglar quiza usando alguna variable de entorno, que no se si la haya para estos casos, o haciendo un find, ya que se como se llaman los archivos a cambiar permisos, pero tendria el problema que cualquier modificacion del script ajeno, podria echar a perder el mio. Aparte de eso, que yo sepa tengo el problema con un lanzador concreto, pero no se si hay algun problema derivado que aun no haya salido a la luz. No he mirado que hace el script ajeno para ver si hace algo mas que tuviera que reparar, ya que esa solucion no me termina de servir. La idea es ejecutarlo como user sin privilegios. El resto no me dejaria tranquilo.

Entiendo tu punto con lo del alias, pero antes que eso, creo que provocaria menos confusion para el usuario ejecutar los 2 scripts (mio y ajeno) por separado, algo como sudo bash mi_scripit, y una vez que termine, bash /ruta/script_ajeno. Seria lo mismo, pero quiza cree menos confusion al usuario final de mi script.

No creo que te refieras a meter el alias dentro de mi script. No sabria como implementarlo, aparte de que igualmente habria que ejecutarlo con sudo, y ya lo leeria todo como root. No veo que solucionara nada.

Mientras escribo esto, se me ocurre una idea y no se que tanto disparatada.

Creo recordar que crontab ejecuta los jobs por usuario. quiza podria crear un job para el user, que se ejecute a los pocos segundos de escribir el job, que ejcute el script, y que se autoborre (el job de crontab) una vez termine, pero me da la impresion de intentar matar moscas a ca;onazos.

De momento la opcion de ejecutar los 2 scripts por separado es la que mas me gusta, aunque seria muy cool meterlo todo en uno solo.

Desconectado

#11 21-09-2018 20:59:38

kcdtv
Administrator

Registrado: 14-11-2014
Mensajes: 4,572

Re: script bash pasar de superuser a user normal

Pero ya solo con el idioma en que tenga el sistema, cambia la ruta. escriorio|desktop por ejemplo.

De esto se encarga tu script ajeno... ¿Qué es este script ajeno?
Pon un link y entenderemos mejor
Sino el alias es como hacer un script que engloba los dos scripts y los ejecuta consecutivamente. Puedes hacer un script si quieres en lugar de un alias. Pero si te parece bien ejecutar un scripts después el otro entonces quédate como estás.

Desconectado

#12 21-09-2018 21:45:02

javierbu
Usuario

Registrado: 09-08-2018
Mensajes: 67

Re: script bash pasar de superuser a user normal

No tengo el script ahora a mano. Los puedo subir mas tarde (mio y ajeno), si quieres echarles un ojo.

Es para instalar arduino-ide.

El script creo que solo se encarga de crear los lanzadores en el menu de apps y en el escritorio apuntando al binario. Ni lo he ojeado, ya que no puedo editarlo.

De momento lo dejo asi, ejecutando los 2 por separado, no tan cool, pero funcional. No quiero perder mas mi tiempo y menos el vuestro en esto.

De todos modos, si a alguien se le ocurre algo, puedo probarlo a ver si sirve como solucion.

Muchas gracias

Desconectado

Anuncio

Wifi-libre.com: El libre pensamiento para un internet libre / Regístrese ahora

Temas similares

Pie de página

Información del usuario

Ultimo usuario registrado: Huev0
Usuarios registrados conectados: 0
Invitados conectados: 4

Estadisticas de los foros

Número total de usuarios registrados: 1,303
Número total de temas: 1,239
Número total de mensajes: 12,654

Máx. usuarios conectados: 74 el 13-11-2018 18:47:20