실행 비트가 설정되지 않았습니다.

실행 비트가 설정되지 않았습니다.

방금 사용할 EC2 인스턴스를 설정하고 파일 권한을 테스트하고 있는데 실행 비트가 하위 수준(읽기 및 쓰기만 실행되지 않음)으로 전달되지 않는 것을 확인했습니다.

[ec2-user@server www]$ touch web/hi
[ec2-user@server www]$ ls -l web/
total 4
-rw-rw-r-- 1 ec2-user apache  0 May 27 19:02 hi
-rwxrwxr-x 1 ec2-user apache 43 May 27 05:15 index.php
[ec2-user@server www]$ getfacl --all-effective web/
# file: web/
# owner: ec2-user
# group: apache
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

실행 비트를 전달하기 위해 무엇을 놓치고 있습니까?

답변1

mkdir을 테스트해 보십시오. 이것이 대부분의 사람들이 걱정하는 것입니까?

touch는 실행 파일을 생성하지 않습니다. sys_open()의 모드 매개변수에서 이러한 비트를 마스크합니다. 소스 코드:

 133       /* Try to open FILE, creating it if necessary.  */
 134       fd = fd_reopen (STDIN_FILENO, file,
 135                       O_WRONLY | O_CREAT | O_NONBLOCK | O_NOCTTY, MODE_RW_UGO)

모드 매개변수에는 X가 없습니다. 프로그램이 허용하지 않는 경우 프로그램이 실행 가능(또는 누구나 읽을 수 있는 등) 파일을 생성하도록 강제할 수 없습니다. 많은 파일 생성이 이와 같습니다. 실행 파일을 설치하는 것은 덜 일반적인 상황입니다.

터치에 사용되는 시스템 호출은 다음과 같이 설명됩니다.POSIX 표준.

관련 정보