在android文件共享期间访问权限

时间:2013-09-24 16:02:45

标签: java android android-intent android-file android-sharing

为什么openFileOutput()文件MODE_WORLD_READABLE(作为手册says)使其他应用程序可以读取文件(通过共享意图)足够了?

即使文件是可读的,目录也不是私有的(rwx ------而不是rwxrwxrwx)?

2 个答案:

答案 0 :(得分:1)

  

即使文件是可读的,该目录是否仍然是私有的(rwx ------而不是rwxrwxrwx)?

让目录为deny-all会阻止第三方列出目录的内容或在那里创建新文件。在给定该文件的完全限定路径的情况下,它对能够读取文件没有影响。

话虽如此,请不要使用MODE_WORLD_READABLEUse FileProvider instead,因此您可以更好地控制谁有权访问该内容。这样,例如,对于特定的共享操作,您可以将文件完全无法访问除外)。

答案 1 :(得分:0)

我认为手动引用不正确。无论其模式如何,其他应用程序都无法读取内部存储中的文件。您所拥有的混乱并不罕见,这就是应用程序应该使用FileProvider向其他应用程序提供文件的原因。

这是一个安全问题:文件系统权限不能充分保护数据。要通过文件权限向另一个应用程序提供文件,您必须设置chmod a + r的等效值(至少为)。这样就可以对任何其他应用程序进行读取访问,这是对任何Tom,Dick或Harry开始诋毁文件的邀请。此外,访问更改是永久性的,除非您记得将其更改回来。

相比之下,对FileProvider使用URI权限仅提供临时读取访问权限,并且仅提供请求它的特定应用程序。您可以设置应用程序,以便只有在用户访问您的应用程序以请求文件时才授予您访问权限;至少在那时,用户知道要求该文件的应用程序和拥有该文件的应用程序。