2012-04-25 4 views
4

私はUnity 2Dデスクトップ環境をカスタマイズできるUbuntu用にapplicationを書いています。
いくつかの設定では、ユーザー固有のDconfを使用して変更できます。したがって、あるユーザーが設定を変更すると、そのユーザーにのみ適用されます。
しかし、他の設定については、普通のユーザーが書き込めない/usr/share/unity-2d/にあるテキストファイルを編集する必要があります。この問題を解決するには、ユーザーにアプリケーションをrootとして実行させて、/usr/share/unity-2d/にアクセスできるようにすることをお勧めします。アプリケーションがルートとして実行されていて、Dconf設定の1つが変更された場合にのみ、ルートユーザーのDconfで変更されるため、変更は実際のユーザーには適用されません。PolicyKitを使用して、アプリケーションに制限付きファイルへのアクセスを提供します。

私はこの問題の解決策を見つける必要があり、私の最初の現実的なアイデアはPolicyKitを使用することでした。私は自分のアプリケーションが現在のユーザーとして実行されていることを確認する必要がありますが、それはです。には/usr/share/unity-2d/とそのファイルにアクセスできます。私はMonoフレームワークを使ってC#でアプリケーションを書いています。私はPolicyKitに関する経験は本当にありません。正直なところ、これは真剣なLinuxアプリケーションを作るための私の最初の試みです。

私のアイデアはPolicyKitでしたが、もしあなたの誰かがこれを達成する別の(現実的な)方法を持っていれば、それも私と同じです。 PolicyKitを使用することになった場合は、これを行う方法の詳細を知りたいと思います。私はおそらくちょうどpkexecを使用して私のアプリケーションを実行することができます知っているが、私は実際にそのディレクトリにアクセスする必要がある機能をロック解除する私のアプリケーション内のボタンの行の中でもっと考えていたその時点では、フォルダ内のファイルへのアクセスを書き込みます。このようにして、アプリケーションが実行されているシステムに対して特別な権限を持たない人は、基本的な設定をカスタマイズすることができます。

+0

私はUnityの仕組みに慣れていませんが、あなたは/ usr/share/unity-2dの下でファイルを変更したいと思いますか?典型的なUbuntuパッケージは、通常の動作中に/ usrに書き込むはずではありません(パッケージをインストール/削除していないときには/ usrを読み取り専用でマウントすることができます)。本当にそれらを変更する必要がある場合は、rootのパスワードを要求するのか、それともユーザーのパスワードだけを要求するのか、それとも完全に何かを計画していますか?ユーザー自身のパスワードの場合、どのユーザーが変更を許可されるかを定義します。 –

+0

@thepaulはい、私は/ usr/shareの下のファイルを編集する必要があります。そうですね、unity-2dが更新されると上書きされることに気付いています。 パーミッションとパスワードに関しては、PolicyKitのためのものです。アプリケーションにこれらのファイルへのアクセス権を与えるだけです。 – RobinJ

+0

私はあなたがPolicyKitの使用を考えていることが分かりました。しかし、ポケットエージェントはユーザーの認証方法を決めるのではないので、これらの変更を許可する必要があるユーザーを知る方法についての質問はまだありません。この場合、より簡単な特権分離メカニズムを採用するほうがはるかに簡単になるかもしれないと私は思っています。 –

答えて

1

まあ、明白な解決策は2つのプロセスを持つことです.1つはGUIを持つ通常のユーザーアプリケーションで、ルートとして実行してファイルをルートとして操作するものです。

など。問題rootとしてファイルを書き込みますアナログ「のみがコマンドライン」のように:リダイレクトは対話型シェルによって行われ、それはルートのアクセス権を持っていないため

sudo echo Hello World >/root/hello.txt

は動作しません。

echo Hello World | sudo tee /root/hello.txt

すぐ/root/hello.txtファイルが許可されている(須藤を介して)ルートとして実行ティーによって開かれる:

古典的な溶液は、2つのプロセスを使用することです。

関連する問題