여러 개의 셸 파일을 USB 저장 장치에 생성하거나 복사할 때마다 해당 파일을 실행 가능하게 만들 수 없습니다.
test.sh를 생성하면 기본 파일 권한은 644가 되지만 실행하면
chmod 777 test.sh
오류는 보고되지 않으며 echo $?
"0"도 반환됩니다. 하지만 여전히 ls -l
권한이 표시되어 644
실행할 수 없습니다../test.sh
답변1
예, 이러한 권한 설정을 지원하지 않는 파일 시스템(예: VFAT)으로 장치가 포맷된 경우 이런 일이 발생할 수 있습니다. 이러한 경우 umask는 fstab(또는 핫플러그와 동등한 항목)의 설정을 기반으로 동적으로 생성됩니다.
자세한 내용은 man mount를 참조하세요. 예를 들어 VFAT의 경우 다음을 찾습니다.
지방 장착 옵션
uid=값 및 gid=값
모든 파일의 소유자와 그룹을 설정합니다. (기본값: 현재 프로세스의 uid 및 gid입니다.)
umask=값
umask(존재하지 않는 권한의 비트마스크)를 설정합니다. 기본값은 현재 프로세스의 umask입니다. 값은 8진수로 제공됩니다.
등.
답변2
noexec
파일 시스템 에 권한의 모든 실행 비트가 설정되지 않은 것처럼 해당 파일 시스템에서 프로그램 실행을 비활성화하는 옵션이 설치된 것 같습니다 . 마운트 옵션을 사용하는 경우 user
(또는 일부 UI는 백그라운드에서 이를 사용하는 경우) 를 noexec
사용하여 명시적으로 끄지 않는 한 켜집니다 exec
.
대부분의 USB 스틱은 권한 개념이 없는 MSDOS 파생 VFAT 파일 시스템을 사용합니다. 파일 시스템을 마운트할 때만 권한 비트를 지정할 수 있으며 이러한 권한은 해당 파일 시스템의 모든 파일에 적용됩니다.
스크립트를 실행할 권한이 없으면 명시적으로 인터프리터를 호출하세요.
sh /media/stick/test.sh
동적으로 연결된 바이너리의 경우 동적 링커가 호출됩니다.
/lib/ld-linux.so.2 /media/stick/myprog