zey*_*yue 4 ubuntu permissions mount
我已经是“aid_sdcard_rw”组的成员:
android@localhost:~$ whoami
android
android@localhost:~$ groups
android aid_radio ...... aid_sdcard_rw ......
Run Code Online (Sandbox Code Playgroud)
你可以看到我已经在aid_sdcard_rw组中了。然后,当我访问目录 /storage/sdcard0 时:
android@localhost:~$ ls /storage/sdcard0/
ls: cannot open directory '/storage/sdcard0/': Permission denied
Run Code Online (Sandbox Code Playgroud)
但:
android@localhost:~$ ls -l /storage/
total 8
d---rwxr-x 17 android aid_sdcard_rw 8192 1? 1 1970 sdcard0
Run Code Online (Sandbox Code Playgroud)
组“aid_sdcard_rw”成员没有读取权限吗?为什么这个权限被拒绝发生?
我运行的系统是 ubuntu 16.04 并使用名为 Linux Deploy 的应用程序在我的 android 手机中运行,并且我的手机插入了外部 sd 卡:
Welcome to Ubuntu 16.04 LTS (GNU/Linux 3.4.5 armv7l)
* Documentation: https://help.ubuntu.com/
Ubuntu 16.04 LTS [running via Linux Deploy]
Run Code Online (Sandbox Code Playgroud)
目录 /storage/sdcard0 是我的外部 sd 卡挂载目录(请参阅下面的最后一行):
android@localhost:~$ cat /etc/mtab
/dev/loop1 / ext4 rw,relatime,data=ordered 0 0
proc /proc proc rw,relatime 0 0
sys /sys sysfs rw,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs rw,relatime 0 0
/dev/block/vold/179:97 /storage/sdcard0 vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
Run Code Online (Sandbox Code Playgroud)
我试过 umount /storage/sdcard0 并使用选项 -o umask=0000 重新安装它,但命令 ls -l /storage 得到与上面相同的结果。
如果拥有该文件或目录的用户被明确拒绝通过权限访问该文件或目录,则该用户无法访问该文件或目录。所有者是否是具有访问权限的组的成员并不重要。
或者换句话说,要以所有者身份访问文件或目录,它必须允许所有者访问。
在您的情况下,您有一个没有x
所有者权限的目录。因此,所有者无法访问该目录。
要解决此问题,请使用
chmod u+x /storage/sdcard0
Run Code Online (Sandbox Code Playgroud)
如果所有者还需要能够列出目录的内容,请同时授予所有者r
权限。要创建或删除文件或子目录,您将需要w
权限。
您应该能够在卡卸载的情况下设置目录的权限。挂载SD卡时,挂载点的权限应该继承自目录权限。
android 用户也是目录的所有者,所有者没有权限(即使 android 用户是有效组的成员)。解决方案是更改目录的所有者chown
或与其他用户(属于有效组)一起尝试。
归档时间: |
|
查看次数: |
612 次 |
最近记录: |