2009-04-07 30 views
6

Tengo un pequeño problema con Linux, que me enseñará a pasar tantos años en Windows. De todos modos lo hice una pequeña aplicación Java, envuelto muy bien con la secuencia de comandos de Java Service Wrapper, pero cuando corro ese guión:Permiso de Linux denegado después de chmod a = rwx

sh ./wrapper.sh console 

consigo ha denegado el permiso de inmediato. El mensaje ha denegado el permiso es así:

eval: 1: /home/user1/MyApp/bin/wrapper: Permission denied 

Mis pequeñas vidas wrapper.sh en la carpeta MyApp/bin. El directorio MyApp/bin/envoltura contiene 2 archivos:

  • envoltorio-linux-x86-32
  • envoltorio-linux-x86-64

Como prueba me encontré con el siguiente comando chmod :

chmod a=rwx MyApp -R 

comprobé que todo estaba rwx, incluso en las subcarpetas y trataron de ejecutar el script de nuevo, con el mismo resultado exacto ... permiso denegado.

¿Alguien tiene alguna idea de lo que podría intentar a continuación para hacer que el bebé corra?

Gracias, Lancelot

+0

¿Cuál es el contenido del envoltorio? ¿Podría ser que llame a un comando llamado _eval_? Mi hombre me dice que hay un comando eval - construir comando mediante la concatenación de argumentos. Tal vez haya un problema en el script de envoltura. – lothar

+0

Confío en que ha eliminado el permiso de escritura pública en los archivos y en los directorios. Raramente es defendible dejar archivos o directorios con permiso de escritura pública -/tmp es un caso especial y requiere que el conjunto de bits adhesivos sea remotamente seguro. –

Respuesta

8

acabo de notar el mensaje de error hace referencia al nombre de la directorio alojamiento de su archivo:

eval: 1: /home/user1/MyApp/bin/wrapper: Permission denied 

Sabemos que es un directorio ya que ha mencionado "El directorio MyApp/bin/envoltura contiene 2 archivos" .

¿Podría comprobar su secuencia de comandos, por ejemplo, donde está utilizando el nombre del directorio como un comando? Como usar wrapper (que es el nombre del directorio) en lugar de wrapper/wrapper-linux-x86-32 (que sería un nombre de archivo), o errores similares?

errores similares a menudo aparecen cuando se utiliza espacios en los nombres de archivo y el olvido de citar dicho los nombres de archivo (probablemente no es el caso aquí, sin embargo.)

De no ser así, ¿podría editar su pregunta para incluir el contenido del guión envoltorio que estás llamando?

(Nueva respuesta ya que es completamente ajenos a la idea noexec anterior, y que uno puede permanecer como referencia.)

+0

You da man. Eso es exactamente lo que estaba sucediendo. El sistema estaba confundido e intentó ejecutar una carpeta en lugar de un archivo. Tenga en cuenta que si mi estructura hubiera sido a prueba de balas en primer lugar, el sistema no se confundiría. ¡Las máquinas solo hacen lo que les decimos que hagan! Gracias un millón de veces moocha. – Lancelot

+0

No lo menciones, me alegro de poder ayudarte. –

+0

+1 para el análisis genial de la pregunta :) –

0

puede que tenga que conceder también la ejecución de scripts en su envoltorio

chmod + x wrapper.sh

EDIT: Acabo de notar que su wrapper.sh se encuentra en su carpeta MyApp /EDIT

también, si u asegúrese de tener

#!/bin/sh 

en la parte superior de su archivo .sh, se puede ejecutar la siguiente manera:

.wrapper.sh

+0

Hola Roy, cuando hago ls -All aquí es lo que imprime para mi wrapper.sh: -rwxrwxrwx 1 user1 user1 19035 2009-04-07 15:32 wrapper.sh – Lancelot

+0

chmod con = es bastante aceptable, ya está configurado bit de ejecución. – paxdiablo

0

En primer lugar, intente abrirlo en un editor de texto, para asegurarse de que tiene acceso de lectura. Si es así, ¿

chmod +x wrapper.sh 

Y asegúrese de que tiene #!/bin/sh al comienzo de la secuencia de comandos

+0

Hola Zifre, el #!/Bin/sh está allí, acabo de comprobar. – Lancelot

5

El sistema de alojamiento de archivos su guión podría ser montado con la bandera noexec. Compruebe su entrada/etc/fstab para que el sistema de archivos y si hay un noexec no trate de extraerlo y luego volver a montar ese sistema de archivos a través de mount /path/to/mountpoint -o remount

Pensándolo bien, comprobar la salida del comando mount para casos NOEXEC vez de/etc/fstab (el sistema de archivos podría haberse montado de forma dinámica.)

+0

no, no existe la opción "noexec" en ninguno de los sistemas de archivos. Pero gracias por señalar ese archivo, es útil saber dónde está esa información. – Lancelot

+0

Esta es una instalación muy directa de Ubuntu. Nada se monta después del inicio. Las unidades de disco y el cdrom se montan automáticamente cuando se inicia el sistema. – Lancelot

0

Usted puede tratar de ejecutar el archivo que estaba allí en el directorio personal del otro usuario, puede dar permiso al "usuario" usuario

chmod -R a + x/home/user1 o chmod -R o + x/home/user1 chmod -R g + x/home/user1

0

Aunque mi problema fue un poco diferente esta búsqueda Yo aparecí en mi búsqueda algunas veces mientras buscaba un problema similar, así que publicaré mis hallazgos aquí.

Mi problema es que no puedo acceder al almacenamiento/carpeta después del comando chmod.

Después de la ejecución de comandos:

sudo chmod -755 storage -R //notice -755 is wrong, it should be 755 

no pude acceder al almacenamiento/carpeta más.

He intentado ls -l:

storage permissions d---------

También después de git status:

storage/.gitignore: Permission denied

Después de ejecutar el comando de la derecha:

sudo chmod 755 storage -R // without - 

correo todo volvió a la normalidad.