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

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

몇 개의 셸 파일을 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(또는 일부 사용자 인터페이스가 내부적으로 이를 사용하는 경우) 를 사용 noexec하여 명시적으로 끄지 않는 한 은 켜집니다 exec.

대부분의 USB 스틱은 권한 개념이 없는 MSDOS 파생 VFAT 파일 시스템을 사용합니다. 파일 시스템을 마운트할 때만 권한 비트를 지정할 수 있으며 이러한 권한은 해당 파일 시스템의 모든 파일에 적용됩니다.

스크립트를 실행할 권한이 없으면 명시적으로 인터프리터를 호출하세요.

sh /media/stick/test.sh

동적으로 연결된 바이너리의 경우 동적 링커를 호출합니다.

/lib/ld-linux.so.2 /media/stick/myprog

관련 정보