Estoy corriendo Ubuntu en el equipo 1 y el equipo 2. He compilado un programa de C++ en el equipo 1, y puedo ejecutar desde el terminal usando ./program_name. Funciona muy bien.

Sin embargo, cuando trato de hacer esto en el equipo 2, que dice: bash: ./program_name: permission denied

Lo que está mal y lo que puedo hacer al respecto?

  • ¿Tienes permisos para ejecutar progam_name?
  • ¿Cómo obtener el programa de ordenador 1 ordenador 2? Hizo usted copia el ejecutable o volver a compilar el código fuente? ¿Cuál es la salida del comando «ls -l program_name»?
  • ¿Cómo puedo averiguarlo? Sé la contraseña de root si que ayuda. Yo era transportada a través de un dispositivo USB.
  • Este parece ser fuera de tema, para ASÍ, porque no es acerca de la programación, pero la gestión de derechos en Linux
  • Este problema no tiene nada que ver con el idioma del programa en que fue escrita, ni la cáscara se utiliza.
  • trate de bash program_name
  • Escribí un .sh archivo. Se negó a ejecutar con este mensaje de error. Yo diría que este es sin duda un tema de StackOverflow. He nominado para la re-apertura.

InformationsquelleAutor Kian | 2013-09-23

3 Comentarios

  1. 337

    chmod u+x program_name. A continuación, ejecutarlo.

    Si eso no funciona, copie el programa desde el dispositivo USB a un nativo de volumen en el sistema. Luego chmod u+x program_name en la copia local y lo ejecuta.

    Unix y sistemas tipo Unix, generalmente no se ejecutará un programa a menos que esté marcado con permiso para ejecutar. La forma en que se copian los archivos de un sistema a otro (o se monta un volumen externo) puede haber apagado el permiso execute (como una característica de seguridad). El comando chmod u+x name agrega el permiso para que el usuario que posee el archivo para ejecutarlo.

    Que comando sólo cambia los permisos asociados con el archivo; no cambia los controles de seguridad asociados con el volumen completo. Si es que los controles de seguridad en el volumen que están interfiriendo con la ejecución (por ejemplo, un noexec opción puede ser especificado para un volumen en el Unix fstab archivo, que dice que no permiten el permiso de ejecución de archivos en el volumen), entonces usted puede montar el volumen con opciones para permitir la ejecución. Sin embargo, a copiar el archivo en un volumen local puede ser más rápido y más fácil solución.

    • Yo solía pensar que esto sólo ocurriría en el incumplimiento de Unix/Linux de forma nativa particiones FAT32, y no sucederá en /tmp. Resulta que mi tmpfs /tmp sufre el mismo problema, y tengo que copiar el archivo ejecutable en un verdadero nativo de volumen, es decir, mi casa carpeta ~ en una partición ext4.
    • I, se encontraron con este problema hoy en día, así que me STFW, el primer resultado de la búsqueda es en color morado, lo que significa que he leído que antes. «Que es un signo prometedor», me hablaba a mí mismo, y, a continuación, haga clic en que el resultado de la búsqueda. Me trajo a esta página, esta respuesta que no funciona en mi caso, y, finalmente, el comentario anterior que funciona. Y entonces me doy cuenta de que el comentario fue escrito por mí, hace 2 meses. Wow, lo que es una vida.
    • Lo siento por llevar a cuestas en esta P/A … por favor, también creo que tal vez noexec en fstab que se monta la unidad sin ningún tipo de privilegios de ejecución … «he oído» que «algunas personas» perdido un poco de tiempo buscando que …
    • Sí, ese es exactamente el problema en mi caso.
    • es posible ofrecer en forma permanente, el permiso a un archivo en orden a evitar la repetición de la chmod manipulación cada vez que quiero usar ?
    • hace un cambio duradero. Si el cambio de permisos después de utilizar chmod que les permitan, entonces algo está cambiando. (Esto puede incluir algo de eliminar el archivo y volver a crear o el volumen del archivo está siendo desmontar y volver a montar. Si el volumen se vuelve a montar, hay maneras de especificar los permisos por defecto para los archivos en volúmenes externos, pero que está más allá del alcance puedo contestar ahora.)
    • «son agradecidos

  2. 27

    Intente esto:

    sudo chmod +x program_name
    ./program_name 
    • Gracias por tu consejo. Yo hice probar, pero ahora dice bash: ./program_name no se puede ejecutar el archivo binario
    • Podría ser porque el equipo 2 es de 32 bits y el equipo 1 es de 64 bits? Supongo que tal vez debería compilar en el equipo 2. Gracias por su ayuda a todos.
    • Sí, si se compila un programa en 64 bits, y tratar de ejecutar en un sistema de 32 bits, no funciona. usted necesidad de volver a compilar el código fuente en el equipo 2.
  3. 10

    Suena como usted no tiene el permiso de ejecución indicador establecido en los permisos de archivo, intente:

    chmod u+x program_name

Dejar respuesta

Please enter your comment!
Please enter your name here