파일 권한을 변경할 수 없습니다.

파일 권한을 변경할 수 없습니다.

여러 개의 셸 파일을 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

관련 정보