우분투는“bash : ./program Permission denied”라고 말한다.


206

컴퓨터 1과 컴퓨터 2에서 Ubuntu를 실행하고 있습니다. 컴퓨터 1에서 C ++ 프로그램을 컴파일했으며을 사용하여 터미널에서 실행할 수 있습니다 ./program_name. 잘 작동합니다.

그러나 컴퓨터 2 에서이 작업을 수행하려고하면 다음과 같이 말합니다. bash: ./program_name: permission denied

무엇이 잘못되었고 어떻게해야합니까?


7
실행할 권한이 progam_name있습니까?
— fedorqui 'SO 중지 피해'

1
컴퓨터 1에서 컴퓨터 2로 프로그램을 어떻게 얻었습니까? 실행 파일을 복사했거나 소스 코드를 다시 컴파일 했습니까? “ls -l program_name”명령의 출력은 무엇입니까?
— Eric Postpischil

2
이것은 리눅스에서 프로그래밍이 아니라 권한 관리에 관한 것이기 때문에 SO에 대한 주제가 아닌 것 같습니다.
— nijansen

4
시도bash program_name
— Nadjib 마미

10
나는 .sh파일을 썼다 . 이 오류 메시지와 함께 실행을 거부했습니다. 이것이 확실히 OverOver 주제입니다. 재개 후보로 지명되었습니다.
— ArtOfWarfare

답변:


392

chmod u+x program_name. 그런 다음 실행하십시오.

그래도 문제가 해결되지 않으면 프로그램을 USB 장치에서 시스템의 기본 볼륨으로 복사하십시오. 그런 다음 chmod u+x program_name로컬 사본에서 실행하십시오.

유닉스 및 유닉스 계열 시스템은 일반적으로 실행 권한이 표시되어 있지 않으면 프로그램을 실행하지 않습니다. 한 시스템에서 다른 시스템으로 파일을 복사하거나 외부 볼륨을 마운트 한 방식이 실행 권한을 해제했을 수 있습니다 (안전 기능으로). 명령chmod u+x name 은 파일을 소유 한 사용자가 파일을 실행할 수있는 권한을 추가합니다.

이 명령은 파일과 관련된 권한 만 변경합니다. 전체 볼륨과 관련된 보안 제어는 변경하지 않습니다. 실행을 방해하는 볼륨의 보안 제어 인 경우 (예를 들어, noexecUnix fstab파일 의 볼륨에 옵션이 지정되어 볼륨의 파일에 대한 실행 권한을 허용하지 않음) 볼륨을 다시 마운트 할 수 있습니다 실행을 허용하는 옵션이 있습니다. 그러나 파일을 로컬 볼륨에 복사하는 것이 더 빠르고 쉬운 해결책 일 수 있습니다.


3
나는 이것이 FAT32와 같은 비 유닉스 / 리눅스 기본 파티션에서만 발생한다고 생각했지만 사용하지 않았습니다 /tmp. 내 tmpfs에 /tmp동일한 문제가 발생하는 것으로 나타 났 으며 실행 파일을 실제 기본 볼륨, 즉 ext4 파티션의 홈 폴더에 복사해야합니다.
— RayLuo

13
나는 오늘이 문제에 부딪 혔으므로 STFW, 첫 번째 검색 결과는 자주색으로 표시되어 이전에 읽었 음을 의미합니다. "이것은 유망한 표시입니다."라고 말한 다음 해당 검색 결과를 클릭하십시오. 그것은이 페이지로 안내했습니다.이 대답은 제 경우에는 효과가 없으며 마침내 위의 주석이 작동합니다. 그리고 나는 2 개월 전에 나에 의해 그 의견이 쓰여 졌음을 알았습니다. 와우, 인생이야.
— RayLuo

5
이 Q / A를 피기 백해서 죄송합니다. 또한 noexec 이 fstab에 있다고 생각 하여 실행 권한없이 드라이브를 마운트 할 수 있습니다. "일부 사람들" 이이를 찾는 데 상당한 시간을 잃었다 고 들었습니다. ..
— Simon Opelt

1
@Webman : 지속적으로 chmod변경합니다. 사용 권한 chmod을 설정 한 후 사용 권한이 변경되면 다른 권한 이 변경되고있는 것입니다. (여기에는 파일을 삭제 한 후 다시 작성하거나 파일을 마운트 해제했다가 다시 마운트하는 볼륨이 포함될 수 있습니다. 볼륨을 마운트 해제하는 경우 외부 볼륨에서 파일에 대한 기본 권한을 지정하는 방법이 있지만 범위를 벗어납니다. 나는 지금 대답 할 수있다.)
— Eric Postpischil

2
@SimonOpelt "다른 사람은"감사
— 마 야콥 센

32

이 시도:

sudo chmod +x program_name
./program_name 

조언 해 주셔서 감사합니다. 방금 시도했지만 bash : ./program_name 이진 파일을 실행할 수 없습니다
— Kian

컴퓨터 2가 32 비트이고 컴퓨터 1이 64 비트이기 때문일 수 있습니까? 컴퓨터 2에서 컴파일해야 할 것 같습니다. 여러분의 도움에 감사드립니다.
— 키안

예, 일부 프로그램을 64 비트로 컴파일하고 시스템에서 32 비트를 실행하려고하면 작동하지 않습니다. 컴퓨터 2에서 소스 코드를 다시 컴파일해야합니다.
— Vitor Villar

sudo프로그램이 쓰기 권한이없는 디렉토리에 있지 않으면 일반적으로 필요하지 않습니다 (이 경우 처음에 어떻게 설치 했습니까?)
— tripleee

10

파일 권한에 실행 플래그가 설정되어 있지 않은 것 같습니다.

chmod u+x program_name
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.