실행 권한없이 파일을 어떻게 실행할 수 있습니까?


11

자신에게 실행 권한을 부여하지 않고 파일을 어떻게 실행할 chmod u+x수 있습니까?

'프로그램으로 파일 실행 허용'체크 표시를 시도하면 체크 표시가 즉시 제거됩니다.



1
이것이 일어나지 않도록 파일 권한의 전체 지점이 아닙니까? : D
galois 2016 년

답변:


14

파일 소유권 확인

파일을 소유하고 있는지 확실하지 않은 경우 추가 작업을 수행하기 전에이 작업을 수행하십시오.

다음 방법 중 하나를 사용하여 실행하려는 파일이 있는지 확인하고 확인하십시오.

그래픽

  1. 파일을 마우스 오른쪽 버튼으로 클릭하십시오.
  2. '속성'을 클릭하십시오.
  3. '권한'탭을 클릭하십시오.
  4. '소유자'필드에 사용자 이름이 표시되어 있는지 확인하십시오. 아래에 "파일 소유권 변경"이 표시되지 않는 경우

커맨드 라인

  1. 터미널에서이 명령을 실행

    [ ! -O "/path/to/file" ] && echo "You don't own the file"
    
  2. " You don't own the file"가 인쇄되면 아래의 "파일 소유권 변경"을 참조하십시오.

파일 소유권 변경

터미널에서이 명령을 실행

sudo chown $USER:$(id -gn $USER) "/path/to/file"

실행 파일

나는에서 발견 대답 코멘트 에 의해 Lekensteyn대답 A에 대한 질문 에 대해 chmod나는 그것의 자신의 질문과 대답, Lekensteyn에 전체 신용을받을 권리가 생각 NTFS 파티션에.

실행 파일 ( /path/to/executable올바른 경로로 대체)에이 명령을 사용하십시오 .

  • 64 비트 실행 파일 :

    /lib64/ld-linux-x86-64.so.2 /path/to/executable
    
  • 32 비트 실행 파일 :

    /lib/ld-linux.so.2 /path/to/executable
    

위의 방법으로 문제가 해결되지 않으면 (또는 파일을 찾을 수 없음 오류가 발생하면) 위의 명령 전에이를 사용해보십시오.

cd "$(dirname /path/to/executable)"

위의 모든 명령 텍스트 기반 스크립트 (Bash, Python, Perl 등)에서 작동 하지 않습니다 (아래 참조).

프로그램이 64 비트인지 32 비트인지 확인

실행 파일이 32 ( x86) 또는 64 ( x86-64) 비트 인지 확인하려면이 명령을 사용하십시오.

objdump -f "$file" | grep '^architecture' | cut -d, -f1 | sed 's/architecture: //'

이 표시되면 i386:x86-6464 비트입니다. 그것이 말하면 i38632 비트입니다.


스크립트

텍스트 기반 스크립트 (Bash, Python, Perl 등)의 #!경우 파일 의 첫 번째 줄에 지정된 명령을 사용해야 합니다.

예를 들어 파일의 첫 줄이

#!/usr/bin/env python3

그런 다음 터미널에서 이러한 명령을 실행 /path/to/file하십시오 (올바른 경로로 대체 )

cd "$(dirname /path/to/file)"       # Not strictly necessary, see section below

# Replace '/usr/bin/env python3' with the first line without the front #!
/usr/bin/env python3 /path/to/file  # Use './file' if you want

자바 .jar파일

Java 실행 가능 jar의 경우 다음 명령을 사용하면됩니다 ( /path/to/jar올바른 경로로 대체 ).

cd "$(dirname /path/to/jar)"   # Not strictly necessary, see section below
java -jar /path/to/jar

필요 없을 때 cd "$(dirname /path/to/file)"

다음 cd "$(dirname /path/to/file)"과 같은 방법으로 프로그램을 실행하기 전에 사용할 필요가없는 상황이 있습니다 cd.

  • 프로그램은 파일 작업 자체를 수행하지 않습니다 (예 : 만 사용 apt-get)
  • 프로그램 용도 cd또는 해당하는 파일 조작을 수행하기 전에 절대 경로 변경 (예 : cd "$(dirname "$0")")
  • 프로그램은 상대 경로 ( ./슬래시로 시작하거나 슬래시없이 시작하는 경로)를 참조하지 않습니다

확실하지 않은 경우 cd "$(dirname "$0")"스크립트 상단에 (또는 해당하는 경우) 추가 (또는 해당되는 경우)하거나 사용하십시오 cd "$(dirname /path/to/file)".


1
이 스크립트를 작성하고 모든 가능성을 커버하기를 원하는 사람이라면 누구나 (MS 파일 시스템 을 많이 사용하는 경우 ) 환영합니다. 내가 직접 할 수도 있지만 의지하지 마십시오. (당신이 이것을 원한다면,이 의견에 충분한지지와 충분한 도움이 될 것입니다.)
kiri

0

쉘 스크립트 인 경우 다른 쉘 스크립트에서 "소스"할 수 있습니다.

#!/bin/bash
# This script runs another script indirectly, by sucking in its contents and evaluating inline:

source /path/to/script/which/lost/its/exec/flag "$@"

필요한 경우 "$ @"는 명령 행 매개 변수를 추가합니다.

그러나 이것은 근본적인 문제에 대한 최상의 솔루션은 아니지만 아마도 그 문제에 대한 대안을 제공 할만큼 충분히 알지 못합니다.


나는 이것이 어떻게 다른지 보지 못합니다bash script $@
kiri

기본적으로 작동 방식이 다릅니다. 아마도 당신이 해결하려는 문제를 이해하지 못합니다. 어떤 이유로 든 실행 불가능한 스크립트를 실행하는 포인트 앤 클릭 방법을 원한다고 가정했습니다. "실행 가능한 하나를 만들고 다른 하나를 소스로 만들어라"는 것이이 문제에 대한 해결책 중 하나입니다. 그것이 잘못된 문제라면 ... well :)
Stabledog
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.