Я смонтировал общий ресурс NFS на своем Android-устройстве с root-доступом, используя монтирование busybox.
Я могу читать и создавать файлы, но когда я создаю файл в любом приложении, права доступа к файлу устанавливаются на 0600 (потому что umask внутри приложения — 077). Это означает, что файл, созданный приложением, может быть доступен только этому приложению.
Как я могу изменить это поведение и создать новые файлы с дополнительными разрешениями? Есть ли способ запустить приложения с другим umask?
Кроме того, почему все файлы, созданные на SD-карте, имеют номер 0775 (таким образом игнорируя umask приложения)? Я хочу, чтобы мое крепление NFS вело себя как SD-карта
У меня есть рутированная версия Android 4.4.2.
Быстрый поиск в Google показывает новый API в Java 7, который позволяет изменять биты разрешений для отдельных файлов. Это не поможет изменить umask, но должно позволить вам переопределить его после создания файла. Проверить:
Если вам действительно нужно изменить umask, похоже, это не функция, которая в настоящее время предоставляется непосредственно BCL. Вам придется прибегнуть к собственным вызовам или использовать библиотеку, чтобы сделать это от вашего имени. Я слышал, что такие библиотеки уже существуют — вы бы искали ту, которая дает доступ к функциям операционной системы POSIX.
Что касается того, почему файлы на SD-карте игнорируют umask, SD-карты обычно форматируются с использованием файловой системы vfat, которая в основном обратно совместима с MS-DOS/Windows 95 и не распознает концепцию пользователей. Таким образом, у него нет возможности ограничить доступ к файлу; если вы не можете ограничить доступ для определенных пользователей, тогда вы ограничите доступ только для всех , и зачем вам вообще это делать? :-)
У vfat есть атрибуты файла — только для чтения, скрытый и системный. Не существует эффективного способа сопоставить с ними большинство комбинаций файловых режимов UNIX. Драйвер, таким образом, просто всегда сообщает, что файлы имеют определенный режим, установленный при монтировании файловой системы. Android монтирует SD-карты, чтобы этот режим возвращался как 0755 (-rwxr-xr-x).