SD 카드의 파일에 exec 권한을 할당 할 수없는 이유는 무엇입니까?


10
shell@android:/sdcard/SW # ls -l
-rw-rw-r-- root     sdcard_rw      128 2012-09-22 11:42 usb0config.sh
shell@android:/sdcard/SW # chmod 777 usb0config.sh                             
shell@android:/sdcard/SW # ls -l
-rw-rw-r-- root     sdcard_rw      128 2012-09-22 11:42 usb0config.sh
shell@android:/sdcard/SW # 

SD 카드의 파일에 exec 권한을 할당 할 수없는 이유는 무엇입니까?

$ adb shell su -c mount |grep -si sdcard
/dev/block/vold/179:97 /mnt/ext_sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0002,dmask=0002,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
tmpfs /mnt/ext_sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0
/dev/fuse /mnt/sdcard fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0


$ adb shell su -c "mount -t vfat -o umask=0000 /dev/fuse /mnt/sdcard"
mount: Block device required

이제 성공적으로 다시 마운트 된 것 같습니다.

$ adb shell su -c "mount -t vfat -o remount,umask=0000 /dev/fuse /mnt/sdcard"

그러나 파일에 777 모드를 할당 할 수는 없습니다.

shell@android:/sdcard/Sw # ls -l
-rw-rw-r-- root     sdcard_rw      128 2012-09-22 11:42 usb0config.sh
shell@android:/sdcard/Sw # chmod 777 usb0config.sh                             
shell@android:/sdcard/Sw # ls -l
-rw-rw-r-- root     sdcard_rw      128 2012-09-22 11:42 usb0config.sh

마운트 정보는 다시 마운트하기 전과 비교하여 변경되지 않습니다.

$ adb shell su -c mount |grep -si sdcard
/dev/block/vold/179:97 /mnt/ext_sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0002,dmask=0002,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
tmpfs /mnt/ext_sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0
/dev/fuse /mnt/sdcard fuse rw,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0

답변:


15

장치에서 비정상적인 작업을 수행하지 않은 경우 SD 카드는 * nix 파일 권한을 지원하지 않는 FAT 파일 시스템으로 포맷됩니다. MIT의 교수 중 한 사람이 작성한 이 Linux FAQ 항목은 약간 설명하고 마운트 옵션을 사용하여 장치의 권한 모드를 변경하는 방법을 설명합니다 (그러나 루트가 필요하며 장치의 모든 파일 / 폴더에 영향을 미침) . 또한 Android의 SD 카드는 기본적으로 -noexec플래그 와 함께 마운트됩니다 .

간부는 당신이 아마의 umask를 함께 다시 마운트 싶어 비트에 대한 0000Umask가 본질적으로 NOT 원하는 권한의 바이너리이기 때문에, (umask를 그렇게 0000말한다 하지 않는 모든 권한을 마스크, 모두 허용). 테스트되지 않았지만 일시적으로 수행하는 것은 다음과 같은 내용입니다.

mount -t vfat -o umask=0000 /dev/your/sdcard/device /mnt/sdcard

/mnt/sdcard장치에 따라 마운트 지점을 약간 다르게 변경해야 할 수도 있습니다 . 그러나 다시 말하지만, mount이것에 대한 루트 권한이 필요합니다.


제공된 명령을 사용하여 다시 마운트하려고 시도했지만 실패했습니다. 내 질문의 보충을 참조하십시오.
Victor S

내 질문의 업데이트를 참조하십시오.
Victor S

1
@VictorS : 내부 및 외부 SD 카드가 모두있는 것 같습니다. 내부는 동일한 방식으로 처리되지 않으며 원하는 권한으로 다시 마운트 할 수있는 방법이 있는지 모르겠습니다. 그러나 sh :를 호출하여 스크립트를 실행할 수도 있습니다 sh usb0config.sh.
eldarerathis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.