2017-06-08 9 views
2

adbを使用してアンドロイドデバイスとの間でファイルをプッシュ/プルします。 これらのファイルは、制限付きのユーザーアカウントでインストールされ、使用される当社のアプリケーションの設定とデータです。デバイスにファイルをプッシュできません

device-usersホームディレクトリに特別な交換フォルダがあります。次のように (アンドロイド用6+)の典型的なフォルダのレイアウトは次のとおりです。

/storage/emulated/0    // home dir of main device user 

/storage/emulated/10   // home dir of restricted user 
/storage/emulated/10/exchange // our file exchange dir 

は、最近では、ファイル交換は、Android 6.0.1を実行しているSamsung Galaxy Tab Sに取り組んでいないことを発見しました。 logcat出力で

// Pushing to main user works just fine 
$ ./adb push barfoo.txt /storage/emulated/0 
[ ?] /storage/emulated/0/barfoo.txt: 0/? 

// Pushing to restricted user does not work 
$ ./adb push barfoo.txt /storage/emulated/10 
adb: error: failed to copy 'barfoo.txt' to '/storage/emulated/10/barfoo.txt': Permission denied 

私は、次の手がかりを見つけました:

audit : type=1400 msg=audit(1496849979.822:280): avc: denied { write } for pid=15762 comm="adbd" name="10" dev="sdcardfs" ino=130656 scontext=u:r:adbd:s0 tcontext=u:object_r:container_app_data_backend:s0:c522,c768 tclass=dir 
audit : SEPF_SECMOBILE_6.0.1_0021 
audit : type=1300 msg=audit(1496849979.822:280): arch=40000028 syscall=322 per=800008 success=no exit=-13 a0=ffffff9c a1=b6bc0fc8 a2=a00c1 a3=1b6 items=1 ppid=1 ppcomm=init pid=15762 auid=4294967295 uid=2000 gid=2000 euid=2000 suid=2000 fsuid=2000 egid=2000 sgid=2000 fsgid=2000 tty=(none) ses=4294967295 comm="adbd" exe="/sbin/adbd" subj=u:r:adbd:s0 key=(null) 
audit : type=1307 msg=audit(1496849979.822:280): cwd="/" 
audit : type=1302 msg=audit(1496849979.822:280): item=0 name="/storage/emulated/10/barfoo.txt" inode=130656 dev=00:17 mode=040771 ouid=0 ogid=1015 rdev=00:00 obj=u:object_r:container_app_data_backend:s0:c522,c768 
audit : type=1327 msg=audit(1496849979.822:280): proctitle=2F7362696E2F61646264002D2D726F6F745F7365636C6162656C3D753A723A73753A7330 
audit : type=1320 msg=audit(1496849979.822:280): 

は、私の知る限り理解してファイルをプッシュから私を防ぐ強制いくつかのSELinuxのポリシーがあります。

誰でもこれを再現できますか? SELinuxのポリシーを緩和する方法はありますか?あなたはファイルを交換するために何をしますか?

+0

rootでプッシュしてみましたか? – mgokgoz

+0

どうすればいいですか? 'sudo ./adb push ...'は何の違いもありません。デバイス自体は根ざしていません。特定のデバイスユーザーとしてadb pushを実行するのは、adb経由でインテントを呼び出すのと同じですか? – lupz

+0

ルートアクセスオプションがある場合は、開発者オプションを確認してください。 – mgokgoz

答えて

0

AndroidFileTransferで表示されるファイルは、実際にプッシュしようとしているルートにはありません。

adb push barfoo.txt sdcard/を試してください。

adb shellcd sdcardをお使いの場合、AndroidFileTransferに表示されているのと同じファイルが表示されます。これは実際にはシンボリックリンクであるため、sdcard自体はありませんが、それは使用されるディレクトリ名です。

+0

ありがとうございます。私はそれを撃つだろう。 – lupz

関連する問題