Linux에 FAT 파일 시스템을 탑재했을 때 모든 파일에 실행 권한이 설정되어 있다는 사실을 발견했습니다. 왜 이런거야? FAT 파일 시스템에서 프로그램을 직접 실행하는 것은 거의 불가능하거나 바람직하지 않으며, 모든 파일에 대해 실행 비트를 암시적으로 설정하는 것은 나에게는 짜증나는 일입니다.
FAT(및 기타 파일 시스템)에는 모드 비트가 없으므로 파일에 777 모드가 표시됩니다.파일 시스템 드라이버로 에뮬레이션됨유닉스에서. 내 질문은 왜 666이 아닌 777입니까?
답변1
FAT는 POSIX 스타일 파일 시스템이 아닐 수도 있지만 실행 파일을 FAT에 저장하고 FAT에서 직접 실행할 수 없다는 의미는 아닙니다. FAT는 POSIX 권한을 저장하지 않기 때문에 이러한 일이 (쉽게) 발생할 수 있는 유일한 방법은 파일이 실행을 허용하는 기본 모드에 있는 경우입니다.
과거에는 (V)FAT가 여전히 다른 운영 체제(DOS 및 Windows)의 기본 파일 시스템으로 사용되고 하드 드라이브가 더 작았을 때 Unix/Linux 바이너리를 FAT 파일 시스템에 저장하는 것이 일반적이었습니다. (특수 파일에 POSIX 속성을 저장하는 FAT 변형도 있으므로 FAT 파일 시스템에서 Linux를 실행할 수 있습니다.) 예를 들어 USB 키를 사용하여 오늘날에도 여전히 그렇게 할 수 있습니다.
보안 위험이 우려되는 경우 몇 가지 옵션을 사용할 수 있습니다. 배포판에 이미 이동식 파일 시스템으로 설정되어 있을 수 noexec
있으며 사용되는 모드를 구체적으로 결정할 수 있습니다 . 또는 확장자를 가진 파일만 실행 가능 비트가 설정됩니다 . (참고로 파일의 권한과 실행능력은 별개입니다...)nodev
dmask
fmask
showexec
.bat
.com
.exe