나는 내 삶을 단순화하기 위해 Makefile을 만들었습니다. 이 Makefile은 내가 만든 bin 파일의 스크립트를 호출합니다. 명령을 실행한 후 make something
다음 오류가 발생합니다.
/bin/sh: 1: .docker/bin/echo-title: Permission denied
몇 가지 검색 후 감사드립니다.이 답변, 명령을 사용하여 파일을 생성한 사용자(일명: me)에게 실행 권한을 부여했습니다 chmod
. 내 질문은 다음과 같습니다파일의 소유자이기 때문에 바로 실행 권한을 주어야 하는 것 아닌가요? 그렇지 않다면...왜?
이것은 개인 프로젝트이지만 직장에서는 Makefiles와 bin 스크립트도 사용하는데 정확히 이런 방식으로 작동합니다(실제로는 파일의 기본 내용을 복사하여 붙여넣습니다). 실행하기 위해 chmod 명령을 실행할 필요가 없습니다. 스크립트. 왜 이런 일이 발생합니까?
(bin 스크립트를 포함하지 않는 Makefile에서 다른 명령을 실행하면 정상적으로 작동합니다.)
답변1
대부분의 파일은 실행이 필요하지 않으므로 새로 생성된 모든 파일에 실행 권한을 부여하는 것은 권장되지 않습니다.
마스크(2)기본 파일 권한이 무엇인지 결정하는 데 사용됩니다. 옵션 없이 실행 하면 umask
사용자의 현재 값이 인쇄됩니다. 이는 파일을 생성할 때 특정 응용 프로그램이 사용한 권한(일반적으로 666 (rw-rw-rw-)
파일에 대한 권한 또는 777 (rwxrwxrwx)
디렉터리에 대한 권한) 에서 차감되는 값입니다 .
따라서 umask 값이 002(매우 일반적인 경우)인 경우 새 파일을 만들면 664 (rw-rw-r--)
.
umask new_value
ie:를 실행하여 기본 umask 값을 수정할 수 있지만, umask 044
파일의 666개에서만 뺄 수 있으므로 기본 실행에는 사용할 수 없습니다. 또한 이를 지속적으로 만들려면 rc 또는 프로필 구성 파일에 추가해야 합니다.
관련된:
umask가 파일의 실행 권한을 변경하지 않는 이유는 무엇입니까?
umask 작동 방식
umask를 통해 실행 권한을 부여하는 방법
umask 077에서 사용자가 파일/디렉토리를 실행할 수 없는 이유는 무엇입니까?