gcc는 파일 권한을 어떻게 처리합니까?

gcc는 파일 권한을 어떻게 처리합니까?

생성된 실행 파일에는 gcc실행 권한이 있습니다.

-rwxrwxr-x

이는 소스 파일이 갖는 권한과 다릅니다.

-rw-rw-r--

이러한 권한을 어떻게 gcc설정합니까?

답변1

파일 권한을 결정하는 데에는 네 가지 사항이 있습니다.

  1. 애플리케이션은 파일을 생성할 때 초기 권한 집합을 할당합니다. 이러한 초기 권한은 매개변수로 전달됩니다.시스템 호출파일 생성(open일반 파일의 경우,mkdir카탈로그 등).
  2. 권한이 숨겨져 있습니다마스크, 이는 실행 중인 프로세스의 속성입니다. umask는 애플리케이션 지정 권한에서 제거할 권한 비트를 나타냅니다. 예를 들어 umask는 022그룹 쓰기 및 기타 쓰기 권한을 제거합니다. umask는 007그룹 쓰기 권한을 유지하지만 다른 사람이 파일에 완전히 액세스할 수 없도록 만듭니다.
  3. 권한은 다음에 의해 추가로 수정될 수 있습니다.액세스 제어 목록. 이 기사에서는 이에 대해 더 이상 논의하지 않겠습니다.
  4. 애플리케이션은 chmod원하는 대로 권한을 변경하기 위해 명시적인 호출을 수행할 수 있습니다. 파일을 소유한 사용자는 해당 권한을 자유롭게 설정할 수 있습니다.

1단계에서 자주 선택되는 권한 집합은 다음과 같습니다.

  • 666(즉, 누구나 읽고 쓸 수 있음)은 일반 파일에 사용됩니다.
  • 비공개로 유지되어야 하는 일반 파일(예: 이메일 또는 임시 파일)의 경우 600(예: 읽기-쓰기, 소유자 전용)입니다.
  • 777(즉, 모든 사람을 위한 읽기, 쓰기 및 실행)은 디렉터리 또는 실행 가능한 일반 파일에 사용됩니다.

애플리케이션이 파일 생성 권한에 추가 쓰기 권한을 포함할 수 있고 종종 포함하더라도 umask로 인해 파일을 읽을 수 없게 될 수 있습니다.

gcc의 경우 먼저 권한 666으로 출력 파일(umask로 마스크됨)을 만든 다음 chmod를 실행하여 실행 가능하게 만듭니다. Gcc는 실행 파일을 직접 생성할 수 있지만 그렇지 않습니다. 쓰기가 완료된 후에만 파일을 실행 가능하게 만들기 때문에 불완전한 동안 프로그램을 시작할 위험이 없습니다.

답변2

당신이 무엇을 요구하는지 잘 모르겠습니다. 어떻게 설정 권한이 있다는 뜻입니까? 파일 소유자는 원하는 대로 권한을 설정할 수 있습니다. gcc귀하의 사용자 계정으로 실행되므로 생성된 파일은 귀하의 소유이며 파일 권한 설정을 포함하여 귀하의 계정이 할 수 있는 모든 작업을 수행할 수 있는 권한을 갖습니다.

답변3

위의 @AshRj의 의견에서 말했듯이 계정에서 설정한 기본 권한에 따라 다릅니다. 기본적으로 수행되는 작업은 x모든 권한(특히 사용자/그룹/기타 권한 포함)으로 시작한 다음 지정된 권한을 끄는 것 입니다 umask(2)(참조 bash(1)). 현재(각 사용자는 자신의 개인 그룹이 있음) umask일반적으로 002(다른 사용자만 거부)로 설정되므로 실행 파일에 대한 권한은 소스에 대한 권한과 관계없이 로 w나타납니다 . rwxrwxr-x다른 파일을 생성하는 경우(예: 편집자를 통해) x해당 파일을 시작할 권한이 전혀 없으므로(임의의 텍스트 파일은 실행되지 않아야 함) 권한은 rw-rw-r--.

관련 정보