View previous topic :: View next topic |
Author |
Message |
Popolous Apprentice
Joined: 04 Aug 2003 Posts: 245
|
Posted: Sat Mar 27, 2010 8:49 pm Post subject: [Programación C] Permiso denegado al ejecutar programa(Sol.) |
|
|
¡Hola!
Estoy tratando de aprender C y tras hacer un simple programa como el siguiente:
Code: |
#include <stdio.h>
int main(void)
{
printf("Hola mundo\n");
return 0;
}
|
Y compilarlo con:
Lo trato de ejecutar con poniendo en la consola:
Pero obtengo (tanto como usuario normal como root) el siguiente error:
Quote: |
$ ./hola
-bash: ./hola: Permiso denegado
|
La verdad es que no sé ni por donde empezar a tratar el problema. A ver si me podéis indicar por dónde empezar a buscar, ya que me parece muy raro que no consiga ejecutar nada compilado y luego compile el sistema sin problemas. La versión de gcc que tengo es la 4.4.3:
Quote: |
Usando especificaciones internas.
Objetivo: x86_64-pc-linux-gnu
Configurado con: /var/tmp/portage/sys-devel/gcc-4.4.3/work/gcc-4.4.3/configure --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.4.3 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.3/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.4.3 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.4.3/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.4.3/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.3/include/g++-v4 --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec --disable-fixed-point --without-ppl --without-cloog --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --enable-multilib --enable-libmudflap --disable-libssp --enable-libgomp --enable-cld --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/4.4.3/python --disable-libgcj --enable-languages=c,c++,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.4.3 p1.0'
Modelo de hilos: posix
gcc versión 4.4.3 (Gentoo 4.4.3 p1.0)
|
¡Saludos!
Last edited by Popolous on Tue Mar 30, 2010 7:20 pm; edited 1 time in total |
|
Back to top |
|
|
Coghan l33t
Joined: 25 Jul 2007 Posts: 789 Location: Gran Canaria (Spain)
|
Posted: Sat Mar 27, 2010 9:04 pm Post subject: |
|
|
¿El directorio/partición donde creas el binario "hola" te permite ejecutar aplicaciones?, comprueba en tu /etc/fstab si tienes la opción "noexec". Es obvio pero comprueba los permisos/propietario del ejecutable. _________________ Salu2.
Alguien, muy acertadamente, dijo una vez wrote: | 'El buen informático es como un bibliotecario, no lo sabe todo, pero sabe donde buscarlo' |
|
|
Back to top |
|
|
Popolous Apprentice
Joined: 04 Aug 2003 Posts: 245
|
Posted: Sat Mar 27, 2010 9:47 pm Post subject: |
|
|
Coghan:
Ahora que lo mencionas, en mi directorio home, que es desde donde trato de ejecutar esto, no me permitía tampoco utilizar archivos bash ejecutables. Los permisos del archivo hola son 775 y el propietario es mi usuario. En el archivo fstab no tengo la opción noexec en la partición donde reside mi /home....
¡Saludos! |
|
Back to top |
|
|
esteban_conde Veteran
Joined: 04 Jun 2003 Posts: 1670
|
Posted: Sat Mar 27, 2010 10:03 pm Post subject: |
|
|
Cambia a /home y haz un ls -l para ver los permisos y el propietario del directorio de tu usuario. _________________ Saludos a tod@s, Esteban. |
|
Back to top |
|
|
Popolous Apprentice
Joined: 04 Aug 2003 Posts: 245
|
Posted: Sun Mar 28, 2010 12:19 pm Post subject: |
|
|
Acabo de mirar los permisos del directorio /home y aparentemente están bien:
Code: |
/home $ ls -al
total 22
drwxr-xr-x 5 root root 1024 nov 15 19:56 .
drwxr-xr-x 20 root root 4096 dic 4 17:46 ..
drwxr-xr-x 45 juanjo users 4096 mar 28 14:08 juanjo
-rw-r--r-- 1 root root 0 nov 5 02:34 .keep
drwx------ 2 root root 12288 nov 11 11:58 lost+found
drwxr-xr-x 2 p2p root 1024 nov 15 19:56 p2p
|
¡Saludos! |
|
Back to top |
|
|
esteban_conde Veteran
Joined: 04 Jun 2003 Posts: 1670
|
Posted: Sun Mar 28, 2010 12:27 pm Post subject: |
|
|
Pues no se me ocurre que puede ser.
Por si acaso mira como me queda despues de compilar, observa que el ejecutable sale con la x, a ti deberia salirte igual.
Quote: | esteban@mimaquina ~ $ ls -l hola*
-rwxr-xr-x 1 esteban esteban 8125 mar 28 14:23 hola
-rw-r--r-- 1 esteban esteban 80 mar 28 14:23 hola.c
|
_________________ Saludos a tod@s, Esteban. |
|
Back to top |
|
|
Popolous Apprentice
Joined: 04 Aug 2003 Posts: 245
|
Posted: Sun Mar 28, 2010 12:46 pm Post subject: |
|
|
Yo estoy más sorprendido que nadie...
Quote: |
$ ls -l hola*
-rwxrwxr-x 1 juanjo juanjo 7864 mar 27 21:47 hola
-rw-rw-r-- 1 juanjo juanjo 75 mar 27 21:47 hola.c
|
Ni idea de por qué no lo hace. Como superusuario es exactamente lo mismo, tanto en mi directorio de usuario normal, como en el /root....
¡Saludos! |
|
Back to top |
|
|
Coghan l33t
Joined: 25 Jul 2007 Posts: 789 Location: Gran Canaria (Spain)
|
Posted: Sun Mar 28, 2010 1:13 pm Post subject: |
|
|
Se me ocurre que copies el binario "hola" al directorio /usr/bin y lo ejecutes desde allí, doy por entendido que los ejecutables en tu sistema funcionan bien dado que si no, no tendrías el sistema activo. Con esto descartamos que sea un problema de particiones marcadas como no ejecutables y puedes centrarte en buscar algún error en gcc.
También se me ocurre mirar en el kernel los formatos binarios:
Code: | CONFIG_ELF_CORE=y
CONFIG_BINFMT_ELF=y
CONFIG_COMPAT_BINFMT_ELF=y
CONFIG_BINFMT_MISC=y
CONFIG_MISC_DEVICES=y
CONFIG_INPUT_MISC=y
CONFIG_MISC_FILESYSTEMS=y |
_________________ Salu2.
Alguien, muy acertadamente, dijo una vez wrote: | 'El buen informático es como un bibliotecario, no lo sabe todo, pero sabe donde buscarlo' |
|
|
Back to top |
|
|
esteban_conde Veteran
Joined: 04 Jun 2003 Posts: 1670
|
Posted: Sun Mar 28, 2010 2:00 pm Post subject: |
|
|
No se exactamente como afecta el directorio /tmp con permisos 1777 y que el usuario pertenezca al grupo wheel. _________________ Saludos a tod@s, Esteban. |
|
Back to top |
|
|
Popolous Apprentice
Joined: 04 Aug 2003 Posts: 245
|
Posted: Sun Mar 28, 2010 6:38 pm Post subject: |
|
|
Gracias, voy a probar lo que me decís a ver si es algo del kernel, que creo Coghan que vas a dar en el blanco, en un rato os lo digo.
@esteban_conde: tengo el directorio /tmp con esos permisos....Ahora estaba instalando Gentoo en un Netbook Acer Aspire One desde una Ubuntu...he compilado sin problemas el programa en Ubuntu y al ejecutarlo, sin errores...
¿Podrías por favor explicarme mejor por qué crees que puede tener algo que ver?
¡Saludos! |
|
Back to top |
|
|
esteban_conde Veteran
Joined: 04 Jun 2003 Posts: 1670
|
Posted: Sun Mar 28, 2010 7:09 pm Post subject: |
|
|
Quote: | ¿Podrías por favor explicarme mejor por qué crees que puede tener algo que ver?
| Pues la verdad es que no, es una sensación, creo haber tenido ese mismo problema, haberlo resuelto y no recuerdo como.
Cuanto más quiero forzar la memoria mas se me niega. _________________ Saludos a tod@s, Esteban. |
|
Back to top |
|
|
esteban_conde Veteran
Joined: 04 Jun 2003 Posts: 1670
|
Posted: Sun Mar 28, 2010 7:28 pm Post subject: |
|
|
Me he dado una vuelta por el kernel y creo que el archivo que compilamos es del tipo a.out, es decir si compilamos el archivo así: gcc hola.c
el resultado es un ejecutable llamado a.out y por tanto esa opción deberia estar habilitada en el kernel, el kernel en el que lo estoy viendo es un 2.6.20 y viene así:
Quote: | Executable file formats / Emulations ---> |
despegando el menu viene la opción aout binary support, echa un vistazo para ver si la tienes habilitada. _________________ Saludos a tod@s, Esteban. |
|
Back to top |
|
|
upszot Guru
Joined: 29 Apr 2009 Posts: 306 Location: Argentina
|
Posted: Sun Mar 28, 2010 9:05 pm Post subject: |
|
|
Popolous wrote: | Yo estoy más sorprendido que nadie...
Quote: |
$ ls -l hola*
-rwxrwxr-x 1 juanjo juanjo 7864 mar 27 21:47 hola
-rw-rw-r-- 1 juanjo juanjo 75 mar 27 21:47 hola.c
|
Ni idea de por qué no lo hace. Como superusuario es exactamente lo mismo, tanto en mi directorio de usuario normal, como en el /root....
¡Saludos! | Hola... me parece que encontre el error... el archivo compilado es "hola.c" y ese no tiene permiso de ejecucion "x"
saludos _________________ ---------------------------------------
Gentoo >> Dell XPS M1530 - T8300 - 4gb - 8600gt 256
ubuntu + xp >> Athon 2000+xp - 1gb - 6600gt 128bt
dd-wrt v24 >> linksys wrt54gl v1.1
android 2.3 (Miui) >> Motorola Defy |
|
Back to top |
|
|
Popolous Apprentice
Joined: 04 Aug 2003 Posts: 245
|
Posted: Mon Mar 29, 2010 8:06 am Post subject: |
|
|
¡Hola!
El archivo hola.c es el código fuente. El compilado se llama hola, sin más y tiene permisos de ejecución para todo el mundo...
¡Saludos! |
|
Back to top |
|
|
esteban_conde Veteran
Joined: 04 Jun 2003 Posts: 1670
|
Posted: Mon Mar 29, 2010 8:44 am Post subject: |
|
|
¡Eh! popolous no se si has leido mi anterior post, compila con la orden gcc hola.c sin darle nombre al archivo, si todo va bien deberias obtener un archivo llamado a.out que es el equivalente a tu hola luego ejecutalo a ver que pasa.
En tu kernel deberias tener la obción de seleccionar los formatos de ejecutables (ejecutable file formats), si no ha cambiado la cosa serian tres elf (ejecutable and linking files), aout (una herencia de fat32) y misc binaries, en mi compilación del kernel tengo seleccionados los tres <*>.
No se por que creo que va a ser eso lo que hace que no se te ejecuten los archivos a.out.
Suerte. _________________ Saludos a tod@s, Esteban. |
|
Back to top |
|
|
i92guboj Bodhisattva
Joined: 30 Nov 2004 Posts: 10315 Location: Córdoba (Spain)
|
Posted: Mon Mar 29, 2010 9:43 am Post subject: |
|
|
Por favor, publica el resultado de "mount | grep home".
No creo que los formatos ejecutables tengan nada que ver por varias razones. En primer lugar gcc por defecto hoy día debería producir ejecutables ELF, independientemente del nombre que tenga el archivo de salida, en segundo lugar, si el sistema no soporta el código objeto contenido en el archivo y no se trata de algo que el shell pueda interpretar entonces el error debería ser del tipo "instrucción ilegal" o algo por el estilo.
Asumiendo que los permisos y el par grupo:usuario son correcto el problema debería estar en el sistema de ficheros (ya sea por noexec, ya sea por corrupción o algún otro problema más extraño). |
|
Back to top |
|
|
codestation Tux's lil' helper
Joined: 09 Nov 2008 Posts: 126 Location: /dev/negi
|
Posted: Mon Mar 29, 2010 1:47 pm Post subject: |
|
|
Popolous wrote: | Coghan:
Ahora que lo mencionas, en mi directorio home, que es desde donde trato de ejecutar esto, no me permitía tampoco utilizar archivos bash ejecutables. Los permisos del archivo hola son 775 y el propietario es mi usuario. En el archivo fstab no tengo la opción noexec en la partición donde reside mi /home....
¡Saludos! |
La opción "user" del fstab también implica noexec, así que asegúrate que no la tengas como opción de montaje en /home _________________ Just feel the code... |
|
Back to top |
|
|
esteban_conde Veteran
Joined: 04 Jun 2003 Posts: 1670
|
Posted: Mon Mar 29, 2010 5:30 pm Post subject: |
|
|
codestation wrote: | La opción "user" del fstab también implica noexec, así que asegúrate que no la tengas como opción de montaje en /home |
Efectivamente lo dice la pagina man de mount y tiene que ser algo así ya que lo que yo sugeria mas arriba no es pues he hecho la prueba de quitar el soporte aout del kernel y me deja correr el ejecutable. _________________ Saludos a tod@s, Esteban. |
|
Back to top |
|
|
esteban_conde Veteran
Joined: 04 Jun 2003 Posts: 1670
|
Posted: Mon Mar 29, 2010 6:24 pm Post subject: |
|
|
Quote: | esteban@mimaquina ~ $ ./hola
-bash: ./hola: Permiso denegado
|
Reproducido el error añadiendo user al cuarto campo de la linea de montaje de /home en fstab. _________________ Saludos a tod@s, Esteban. |
|
Back to top |
|
|
Popolous Apprentice
Joined: 04 Aug 2003 Posts: 245
|
Posted: Tue Mar 30, 2010 7:20 pm Post subject: |
|
|
¡Hola!
Efectivamente, como siempre habéis dado en el clavo:
mount | grep home wrote: |
$ mount | grep home
/dev/sda7 on /home type ext4 (rw,noatime)
/dev/Toshiba1 on /home/juanjo type ext4 (rw,noexec,nosuid,nodev,noatime)
|
Voy a quitarle la opción user del archivo fstab que es el que está dando la brasa. Mil gracias de nuevo compañeros, no sé qué haría sin vuestra ayuda....
¡Saludos! |
|
Back to top |
|
|
rgrajales.biotech n00b
Joined: 05 May 2010 Posts: 4
|
Posted: Wed May 05, 2010 11:30 am Post subject: holap |
|
|
hola chicos, muy agradecido puesto tengo el mismo problema y me alegra que le hayan encontrado solucion, mi preunta es, como hago para eliminar el "user" ese que da error??? que comandos uso y que pasos sigo para hacerlo??
de antemano gracias....
DLB..... |
|
Back to top |
|
|
i92guboj Bodhisattva
Joined: 30 Nov 2004 Posts: 10315 Location: Córdoba (Spain)
|
Posted: Thu May 06, 2010 8:48 am Post subject: |
|
|
Solo tienes que editar el archivo /etc/fstab con el editor de texto que prefieras y asegurarte de no tener "user" o "noexec" en la línea que monta la partición afectada. Necesitas permisos de root para editar dicho archivo. |
|
Back to top |
|
|
rgrajales.biotech n00b
Joined: 05 May 2010 Posts: 4
|
Posted: Thu May 06, 2010 2:32 pm Post subject: /etc/fstab |
|
|
ok, primero que nada, gracias
segundo, cmo llego a ese archivo, pongo en consola "/etc/fstab" y me sale : permiso denegado, cmo hago para obtener ese permiso? lo estoy haciendo bien? estoy haciendo algo mal?
disculpa si son muy tontas mis preguntas, pero la verdad, estoy empezando en esto y quiero desligarme por completo de windows....
gracias nuevamente.... |
|
Back to top |
|
|
rgrajales.biotech n00b
Joined: 05 May 2010 Posts: 4
|
Posted: Thu May 06, 2010 2:40 pm Post subject: sudo -s |
|
|
encontre en una pagina que conseguia permisos de super usuario, con "sudo -s" y lo hago, introduzco, mi contraseña, y me sale root@nombre de usuario-laptop: pero al poner "/etc/fstab" denuevo me dice: "permiso denegado"
gracias de antemano... |
|
Back to top |
|
|
i92guboj Bodhisattva
Joined: 30 Nov 2004 Posts: 10315 Location: Córdoba (Spain)
|
Posted: Thu May 06, 2010 2:50 pm Post subject: |
|
|
Tienes que abrir dicho archivo en un editor de text, como ya dije arriba, escoge el que tu prefieras. En Gentoo nano viene instalado por defecto. También puedes usar vim o cualquier otro, ya sea en modo gráfico o de texto. Asegúrate de ejecutar el editor como root porque si no no te dejará guardar el archivo tras editarlo. /etc/fstab es usualmente legible por todos los usuarios, pero solo root puede modificar el archivo. |
|
Back to top |
|
|
|