¿Cómo ejecutar una aplicación como otro usuario?

17

Yo uso krusader para la gestión de archivos. el problema es que apache DocumentRootdebería estar debajo chown www-data:www-data /path/to/www. así que usando krusader (que se ejecuta bajo mi cuenta) no tengo acceso de escritura /path/to/wwwmientras realmente lo necesito. ¡No sé cómo otros desarrolladores pueden continuar haciendo cosas con tanta restricción!

Me preguntaba si podría ejecutar krusader, ya que www-dataentonces podría jugar fácilmente con archivos. pero usando su - www-datame pidió www-datala contraseña !!

Entonces, ¿cómo puedo ejecutar una aplicación (como krusader) como otro usuario (como www-data) en Gnome?

¿O hay alguna otra solución para mi caso? (¡Resulta curioso saber la respuesta!)

¡tenga en cuenta que sé que puedo ejecutarlo como root ! pero esto causará algunos problemas de permisos al usar cpy mkdir, ya sabes.

PD: sudo y gksudono ayudó:

$ gksudo -u -www-data krusader
No protocol specified
krusader: cannot connect to X server :0.0

Nota final: según la mejor respuesta, lo hice chmod u+w /path/to/wwwy mi problema se resolvió. ¡pero todavía no he logrado abrir krusader como otro usuario!

Alexar
fuente

Respuestas:

4

Reconsiderando esta pregunta (espero haber entendido bien su problema, pero corríjame si me equivoco), encontré otra solución y creo que no necesita ejecutar la aplicación como www-data ni jugar con permisos . Dijiste eso:

DocumentRoot de Apache debe estar bajo el nombre www-data: www-data / path / to / www

pero en realidad, esto no es del todo cierto: los Apache DocumentRootdeben ser legibles www-data, pero no necesariamente de su propiedad. De manera predeterminada, en Ubuntu Desktop, todos los archivos y directorios que cree pueden ser leídos por todos, por lo que puede configurar su DocumentRoot en un directorio dentro de su carpeta de inicio, por ejemplo:

DocumentRoot /home/user/my-project/my-document-root
Andrea Corbellini
fuente
¡Gracias! Simplemente funcionó. y su explicación de por qué esto funcionaría fue muy útil. ya que esto resolvió mi problema, pero todavía tengo curiosidad por saber cómo puedo abrir krusader como otro usuario. otras soluciones simplemente no funcionaron.
Alexar
8
xhost +SI:localuser:uname
gksudo -u uname -l "firefox"
xhost -SI:localuser:uname

Donde uname = el nombre del usuario suplantado. Visto allí: http://ubuntuforums.org/showthread.php?p=10399617

Funciona en mi cuadro inconformista, no hay sonido en el skype bifurcado y ~ / .profile.d no se ejecuta como debería.

Anton S. Kraievoy
fuente
5

Si está ejecutando esto desde el sistema de menús, querrá usar alacarte(Sistema> Preferencias> Menú principal) y cambiar la entrada para krusader y agregarla delante: lo gksudo -u www-dataque debería producir algo como:

gksudo -u www-data krusader

Esto abrirá la ventana de solicitud de tarea administrativa que, según la página de manual de GKSudo , es un

GTK + Frontend para su y sudo

Usar solo gksudo sin el -uinterruptor ejecutará el comando como root.

Marco Ceppi
fuente
gracias, pero devuelve: No se especificó ningún protocolo krusader: no se puede conectar al servidor X: 0.0
Alexar
2
antes de iniciar el comando gksudo, en la terminal bajo la ejecución de su cuenta:xhost +
jet
4

Como Marco mencionó, puede usar gksudo -u www-data <command>para ejecutar comandos como otro usuario. Lo uso habitualmente para ejecutar comandos gdmy, hasta ahora, nunca me ha pedido nada más que mi propia contraseña.

Si está utilizando kde, el equivalente es kdesu -u www-data krusader. Creo que, dado que krusader es una aplicación de kde, podría funcionar mejor con kdesu. Más detalles sobre kdesu aquí .

Solía gksudoejecutar comandos como otros usuarios "humanos" en el sistema y cuando se me solicita la contraseña, escribo la mía.

koushik
fuente
gracias, pero el resultado es como gksudo: Sin protocolo especificado krusader: no se puede conectar al servidor X: 0.0
Alexar
Probablemente para krusader (una aplicación kde), kdesues una mejor opción. He actualizado mi respuesta. ¿Puedes probar eso?
koushik
4

Para convertirse en www-data con su propia contraseña, use esto:

$ sudo su www-data
[sudo] password for <your username>: [enter your password]
$ whoami
(you should see www-data here)

Pero, no creo que pueda ejecutar aplicaciones GUI desde allí ...

Por lo general, solo tengo todo /var/www, pero permito el acceso de lectura a todos:

/var/www$ sudo chown -R [your-username]\:[your-group] *
/var/www$ find . -type d -exec chmod a+rx {} \;
/var/www$ find . -type f -exec chmod a+r {} \;

Espero que eso alivie tu dolor :)

Dr. Hannibal Lecter
fuente
como adivinaste, no pude ejecutar aplicaciones GUI desde allí. que sayedNo protocol specified krusader: cannot connect to X server :0.0
Alexar
¿La segunda solución no es una opción para ti? Sus datos no tienen que ser propiedad de www-data, aunque supongo que es preferible.
Dr. Hannibal Lecter
3

Creo que necesitas ejecutar lo siguiente en la terminal:

xhost +SI:localuser:<user-to-run-as>

Entonces puedes hacer:

sudo su - <user-to-run-as>

Y, por último, ejecuta tu aplicación:

krusader

Eso debería hacerlo, solo asegúrese de reemplazar <user-to-run-as>con su nombre de usuario, por supuesto.

nicholas.alipaz
fuente
0

Tanto 'gksu' como 'kdesu' son interfaces gráficas para 'sudo', que es la herramienta que debes usar cuando estás en un entorno de solo texto. Las herramientas 'gksu' y 'kdesu' requieren que esté en modo gráfico, lo que explica los errores de "no se puede conectar al servidor X".

si desea ejecutar un comando de consola como un usuario diferente, use el comando 'sudo -u username command'.

Sentido Hofstede
fuente
gracias, ejecuto eso y dice que algo así [1] 12100parece ser la identificación del proceso; Pero nada de lo que veo en acción.
Alexar
0

Ejecutar una aplicación gráfica en www-data le da varios problemas. Una cosa que puede hacer es agregarse al grupo www-data, para que pueda cambiar todos los archivos que necesita:

sudo adduser $USER www-data

Nota: probablemente, deberá cerrar sesión en la sesión para que el cambio surta efecto.

Si, después de este comando, aún no puede cambiar algunos archivos, solo asegúrese de tener permiso de escritura sobre ellos:

sudo chown www-data:www-data /var/www/file
chmod g+w /var/www/file
Andrea Corbellini
fuente
sin embargo, no es una solución para el problema general, pero parece funcionar para mi caso; lo intentaré e informaré
Alexar
0

Inspirado por Anton S. Kraievoy, utilicé una solución similar, que funciona para mí. En el usuario, que usando Krusader agregué un nuevo usuario a xhhost:

xhost +SI:localuser:username

Que amablemente inicie sesión:

su - username

Que krusader comienza correctamente como una nueva instancia en un nuevo usuario:

krusader

Tenga en cuenta que se creará una nueva configuración en ~ / .kde / share / config / krusaderrc.

hariprasad
fuente