SDカードのファイルに実行権限を割り当てられないのはなぜですか?


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カードのファイルに実行権限を割り当てられないのはなぜですか?

$ 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カードはFATファイルシステムとしてフォーマットされます。これは* nixファイルのアクセス許可をサポートしていません。MITの教授の1人によるこのLinux FAQエントリは、それについて少し説明し、マウントオプションを使用してデバイスのアクセス許可モードを変更する方法も説明しています(ただし、ルートが必要であり、デバイス上のすべてのファイル/フォルダーに影響します)。 。また、AndroidのSDカードはデフォルトで-noexecフラグ付きでマウントされています。

幹部は、あなたはおそらくのumask値を再マウントしたいと思いますビットの場合0000のumaskは基本的にしないで欲しいの権限のバイナリであることから、(umaskのはそう0000言うていないすべての権限をマスク、それらをすべて許可)。テストされていませんが、一時的にそれを行うのは次のようなものです:

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

/mnt/sdcardデバイスによっては、マウントポイントを少し異なるものに変更する必要がある場合があります。ただし、繰り返しmountますが、これにはroot権限が必要です。


Giveコマンドを使用して再マウントを試みましたが、失敗しました。私の質問の補足を参照してください。
ビクターS

私の質問の更新をご覧ください。
ビクターS

1
@VictorS:内蔵SDカードと外付けSDカードの両方があるようです。内部のものは同じように扱われません、そしてあなたが望む許可でそれを再マウントする方法があるかどうか私は知りません。または、sh:を呼び出してスクリプトを実行することもできますsh usb0config.sh
eldarerathis 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.