เหตุใดฉันไม่สามารถกำหนดสิทธิ์ให้กับไฟล์ในการ์ด 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 คนหนึ่งอธิบายได้เล็กน้อยและยังอธิบายถึงวิธีการที่คุณสามารถใช้ตัวเลือกการเมาท์เพื่อเปลี่ยนโหมดการอนุญาตของอุปกรณ์ (สิ่งนี้จะต้องใช้รูท . นอกจากนี้ยังมีการติดตั้งการ์ด SD ใน Android ตามค่าเริ่มต้นด้วยการ-noexecตั้งค่าสถานะ

สำหรับบิต exec ที่คุณอาจต้องการติดตั้งใหม่ด้วย umask 0000เนื่องจาก umask นั้นเป็นไบนารีไม่ใช่สิทธิ์ที่คุณต้องการ (ดังนั้น 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 usb0config.shแต่คุณสามารถรันสคริปต์ของคุณโดยเรียกการดวลจุดโทษ:
eldarerathis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.