2011-01-28 3 views
2

私はいくつかの変更を加え、私のアプリケーションはクラッシュしています。どうにか私のアプリケーションのアクセス許可とユーザー名が/ data/dataフォルダと一致しません。各アプリのユーザー名は、ファイルシステム上のアプリのユーザー名とは一致しません。ファイルシステムまたはユーザー名を何らかの形でリセットする必要があります。android /data/data/com.xxx.xxx権限をリセットする方法linux?

アプリケーションのユーザー名とグループの割り当てファイルの名前、またはすべてのアプリケーションのアクセス許可をリセットする方法が必要です。

+2

工場出荷時リセット?どのような変更を加えたのかはわかりませんが、ほとんどの場合、ルートされていない電話機や開発者の電話機では、そのフォルダにはアクセス権が制限されています。 – bgs

+1

あなたはchmod 755 dirNameなどについて知っていますか? (それはうまくいくかもしれないが、私はアンドロイドからdiddlyを知らない;-)。 ... がんばろう! – shellter

答えて

1

私はAndroidを使用していませんが、Linuxに基づいていると思います。標準的なコマンドがいくつかあるはずです。ターミナルで

stat -c '%a %n' /data

:ので、これを入力します。 [あなたには端末がありますか?] とにかく、/ dataフォルダのアクセス許可がわかります。 [このフォルダに適切な権限がない場合は、適切な権限を持つフォルダに/ dataを置き換えます。サンプル出力は、これを次のようになります/データを意味

755 /data

755の権限を持っています。

chmod -R 755 /data/data/com.xxx.xxx

それとも、中/データ/データのすべてを変更したい場合は、あなたの代わりに/data/data/com.xxxのことを行うことができます:755はあなたの出力であると仮定すると、再帰的に権限を変更するために、これを入力します。 xxx。

権限が固定されたら、次は所有権です。あなたは正しい所有権を持って知っているディレクトリを知っていれば、このように入力します。ここでは

ls -ld /root/root/com.correct_ownership_app

は、その出力である私の /varフォルダに:

drwxr-xr-x 14 root root 4096 2010-12-16 18:51 /var/

「ルートルートを」ルートは所有者であることを意味します[私は "ルート"がグループだと思います。まず、いずれかのアプリで所有権を確認します。それが同じであれば、パーミッションがアプリのクラッシュを引き起こしているはずです。それが事実なら、あなたはすべきです。それ以外の場合は

、再帰的に所有者を変更するには:

chown -R USER /data/data

は、それがあるべきどのユーザーにユーザーを変更することを確認してください!

0

あなたの携帯電話を台無しにする可能性が高いので、以下を行う前にあなたのものをバックアップしてください。

一言で言えば、一部のアプリケーションでは、ユーザー情報が/data/system/packages.listにスペース区切りの値として格納される傾向がありますが、他のアプリケーションではユーザー情報が/data/system/packages.xmlにXML形式で格納される傾向があります。これに加えて、端末に見られる所有権は、これらのファイルをどのように見ているかとは少し違って見えます。たとえば、私の電話では、WhatsappはUnixユーザu0_a70で、XMLエントリではuserId = "10070"と識別されます。

2つの全く異なるデータセットを見ている2つのスクリプトを必要とするため、ユーザーの許可を「ただ修正」するのは少し難しく、Android LinuxはXMLパーサーを正確には出荷しません。必要なユーザーID変換は、必ずしも適用可能ではないため、どちらの方法でも役に立ちません。

あなたが挑戦のためにアップしている場合は、次のように、BusyBoxのビンを使用して、出発点は次のとおりです。

# Generate a permissions fixer from /data/system/packages.list: 
cat /data/system/packages.list | awk '{print "chown u0_a" $2-10000 ":u0_a" $2-10000 " /data/data/"$1" -R"}' > /data/media/fix_perms.sh 
chmod +x /data/media/fix_perms.sh 

これがどのように見える行のリストが生成されます。

ある
chown u0_a17:u0_a17 /data/data/com.google.android.gsf -R 
chown u0_a6:u0_a6 /data/data/com.android.keyguard -R 
chown u0_a52:u0_a52 /data/data/com.google.android.calendar -R 
chown u0_a48:u0_a48 /data/data/com.android.chrome -R 
chown u0_a55:u0_a55 /data/data/jackpal.androidterm -R 

を有望。すべてをチェック

chown -8998:-8998 /data/data/com.android.bluetooth -R 

あなたは正気に必要がありますしかし、これは「ブルートゥース」、「ラジオ」、および「システム」などのユーザーのために動作しませんし、それらのユーザーを持つ行が代わりのようにゴミを生成します。スクリプトを実行する前に上記のcat..awkを| egrep -v '[0-9][0-9][0-9][0-9]:-[0-9][0-9][0-9][0-9]'に配管することでこれを修正する単純な方法ですが、これはすべての場合に機能しないハックの解決策です。これがあなたに受け入れられるならば、上記を1行にまとめて/data/media/fix_perms.shにリダイレクトすることができます。

これで、/data/system/packages.xmlで定義されたものだけが修正されることはなく、通常のスクリプトではほとんどのデバイスでエラーが発生することがほぼ保証されているため、これについては説明しません。可能な解決策が必要な場合は、コメントを残してください。私はXMLファイルのモックスクリプトも作成します。

関連する問題