为什么我不能在我已经加入的那个组中获得许可?

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 得到与上面相同的结果。

Kus*_*nda 7

如果拥有该文件或目录的用户被明确拒绝通过权限访问该文件或目录,则该用户无法访问该文件或目录。所有者是否是具有访问权限的组的成员并不重要。

或者换句话说,要以所有者身份访问文件或目录,它必须允许所有者访问。

在您的情况下,您有一个没有x所有者权限的目录。因此,所有者无法访问该目录。

要解决此问题,请使用

chmod u+x /storage/sdcard0
Run Code Online (Sandbox Code Playgroud)

如果所有者还需要能够列出目录的内容,请同时授予所有者r权限。要创建或删除文件或子目录,您将需要w权限。

您应该能够在卡卸载的情况下设置目录的权限。挂载SD卡时,挂载点的权限应该继承自目录权限。


Das*_*sel 5

android 用户也是目录的所有者,所有者没有权限(即使 android 用户是有效组的成员)。解决方案是更改目录的所有者chown或与其他用户(属于有效组)一起尝试。

  • @Larry 因为文件权限位声明所有者对该目录没有读、写或执行权限。目录的权限似乎不寻常,但这就是权限位的设置。更合适的权限集是 775 (2认同)
  • @Larri:chown 更改文件/目录的所有者和组,但不影响权限;如果权限为 075,则执行 chown 后它们将保持不变,但权限 0 将影响新所有者而不是“旧”所有者。 (2认同)
  • @Larry `chown`-ing 是“解决”问题的一种方法,但是新所有者的问题是他们无法访问该目录(只要他们不是 root)。`chmod`-ing 将允许该组的所有用户,包括所有者对可能更接近解决它的目录具有完全权限。 (2认同)