Estoy ejecutando Ubuntu en la computadora 1 y la computadora 2. Compilé un programa C ++ en la computadora 1, y puedo ejecutarlo desde la terminal usando ./program_name
. Funciona bien
Sin embargo, cuando trato de hacer esto en la computadora 2, dice: bash: ./program_name: permission denied
¿Qué pasa y qué puedo hacer al respecto?
progam_name
?bash program_name
.sh
archivo Se negó a ejecutar con este mensaje de error. Yo diría que esto definitivamente es sobre el tema para StackOverflow. He nominado para la reapertura.Respuestas:
chmod u+x program_name
. Entonces ejecútalo.Si eso no funciona, copie el programa desde el dispositivo USB a un volumen nativo en el sistema. Luego
chmod u+x program_name
en la copia local y ejecutar eso.Los sistemas Unix y similares a Unix generalmente no ejecutarán un programa a menos que esté marcado con permiso para ejecutarse. La forma en que copió el archivo de un sistema a otro (o montó un volumen externo) puede haber desactivado el permiso de ejecución (como característica de seguridad). El comando
chmod u+x name
agrega permiso para que el usuario propietario del archivo lo ejecute.Ese comando solo cambia los permisos asociados con el archivo; no cambia los controles de seguridad asociados con todo el volumen. Si son los controles de seguridad en el volumen los que interfieren con la ejecución (por ejemplo,
noexec
se puede especificar una opción para un volumen en elfstab
archivo Unix , que dice no permitir permisos de ejecución para archivos en el volumen), entonces puede volver a montar el volumen con opciones para permitir la ejecución. Sin embargo, copiar el archivo a un volumen local puede ser una solución más rápida y fácil.fuente
/tmp
. Resulta que mi tmpfs/tmp
sufre el mismo problema, y tengo que copiar el archivo ejecutable en un volumen nativo real, es decir, mi carpeta de inicio ~ en una partición ext4.chmod
realiza un cambio duradero. Si los permisos cambian después de usarloschmod
para habilitarlos, entonces algo más los está cambiando. (Esto puede incluir algo más, eliminar el archivo y volver a crearlo o el volumen en el que se desmonta y vuelve a montar el archivo. Si se vuelve a montar el volumen, hay formas de especificar permisos predeterminados para archivos en volúmenes externos, pero eso está fuera del alcance Puedo responder ahora.)Prueba esto:
fuente
sudo
generalmente no es necesario, a menos que el programa esté en un directorio donde no tenga permiso de escritura (en cuyo caso, ¿cómo lo instaló allí en primer lugar?)Parece que no tiene el indicador de ejecución establecido en los permisos del archivo, intente:
fuente