우분투는“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를 피기 백해서 죄송합니다. 또한 noexecfstab에 있다고 생각 하여 실행 권한없이 드라이브를 마운트 할 수 있습니다. "일부 사람들" 이이를 찾는 데 상당한 시간을 잃었다 고 들었습니다. ..
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.