"실행"권한은 무엇을합니까?


31

Linux의 "실행"권한을 여전히 이해하지 못한다는 것에 놀랐습니다.

읽기, 쓰기 및 실행의 세 가지 권한이 있습니다. 나는 문자 그대로 읽고 쓰는 것을 이해하지만 실행은 정확히 무엇을합니까?

example.php실행 권한 이 있다고 가정 해 봅시다 . 내가 무엇을 할 수 example.php있습니까?

답변:


32

기본적으로 운영 체제에 파일에서 코드를 실행하도록 지시 할 수 있습니다. 예를 들어, 파일이 이진 실행 파일 인 경우 쓰기 액세스 권한으로 파일을 수정할 수 있고 읽기 액세스 권한으로 파일을 볼 수 있지만 실행 권한이 없으면 프로그램을 실행할 수 없습니다. 스크립트의 경우 프로그램을 '실행'할 필요가 없기 때문에 스크립트가 조금 더 복잡해집니다. 실행 내용을 인터프리터로 읽어 들일 수 있습니다. 스크립트 자체에 대한 권한.

Linux의 일부 스크립트는 자체적으로 실행 가능하며 맨 위에 다음과 같은 줄이 있습니다.

#! / bin / bash 또는

#! / bin / python

이 줄은 커널에게 관련 프로그램을 호출하여 파일을 실행할 수 있음을 알려줍니다 (텍스트 만이 아닙니다). 그런 다음 스크립트를 다음과 같이 실행할 수 있습니다.

./스크립트

하지 말고

파이썬 ./script


이것은 텍스트 기반이 아닌 파일 형식의 경우 무엇을 의미합니까? .png또는 .avi?
iono

1
기본적으로 파일 확장자는 중요하지 않습니다. 당신이있는 경우 #!/bin/bash귀하의 시작 부분에 .avi파일이 배쉬로 실행됩니다. 실제 avi 형식 인 경우 명령으로 해석하면 의미가없고 실패하기 때문에 실행할 수 없을 것입니다.
Mifeet

는 IS #!정말 커널에 의해 해석?
masterxilo

17

"실행"을 통해 사용자는 실행 파일을 실행할 수 있습니다. 디렉토리의 경우 cd 명령을 사용하여 디렉토리를 입력 할 수 있습니다.


1
디렉토리 부분에 대한 액세스는 엄청납니다. 모드 자체의 이름만으로 추측 할 수는 없습니다.
PrimitiveNom

2

실제적인 목적으로, 읽기 권한은 실행 능력을 의미합니다.

그러나 그 반대는 사실이 아닙니다. 코드를 읽을 수있는 권한을 부여하지 않고 코드를 실행할 수있는 권한을 부여하는 기능에는 약간의 가치가 있습니다.


이것은 실제로 많은 의미가 있습니다.
masterxilo

READ / EXECUTE와 혼동되어 그러한 대답을 기대했습니다. 감사합니다
T.Todua

2

GUI 또는 명령 줄에서 앱을 실행하기위한 것입니다. "정상적인"PHP 사용 (웹 서버를 통한)의 경우 아무런 변화가 없습니다. 정확하게 말하면 구성에 따라 다르지만 대부분의 경우 브라우저를 통해 PHP 웹 페이지를로드 할 수 있도록 + x 권한이 필요하지 않습니다.

명령 줄에서 실행하려면 다음이 필요합니다.

  • #!/usr/bin/php스크립트 시작 부분에 추가
  • + x 권한 추가
  • 스크립트는 실행 가능한 검색 경로 ($ PATH 환경 변수)에 있거나 스크립트 이름 앞에있는 디렉토리를 지정해야합니다. 이 같은 절대 경로 일 수 /etc/xdg/foo또는 /home/fred/bar같은, 또는 상대 디렉토리, dir1/prog1또는 ./prog2.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.