0

人々が/var/ libを提案するのを見たことがありますが、それは私のシステムでは機能しません。/ var/lockと/var/ logを除いて、/varのすべてのサブディレクトリは読み取り専用です。

スーパーユーザーアクセスを許可するためにLinuxシェルスクリプトを作成する必要がありますか?または、Javaベースのソリューションはありますか?

/binと/usrはどちらもシステムファイルディレクトリであるため、そこにファイルを保存したくありません(また、保存することもできません)。

アプリケーションがユーザー内でのみ動作する必要がある限り、私は以下を使用できます。

System.getProperty("user.home") + File.separator + ".appname"'

データディレクトリ用。

しかし、永続的なシステム全体のデータについてはどうでしょうか?それはどこに行きますか?

追記:MacOSでもこの問題があります。/ user / Library / Application Supportを使用してユーザー固有のデータを取得できますが、グローバルディレクトリにアクセスする方法がありません。

2番目の注意:私はPreferences APIを認識しており、使用しています。それ以外のデータを保存する方法を探しています。

4

2 に答える 2

1

通常行われるのは、システムのパッケージツールを使用してアプリケーションをインストールすることです。ただし、独自のインストーラスクリプトを作成することもできます。インストールプロセス中に、rootとして実行すると、新しいグループが作成され、/ var/libの下にそのグループが所有する新しいディレクトリが作成されます。たとえば、locateコマンドはこれを行います。

$ ls -l /usr/bin/locate
-rwx--s--x 1 root locate 42032 Nov 17 19:33 /usr/bin/locate

そしてそれはデータディレクトリです:

drwxr-x--- 2 root locate 4096 Nov 15  2010 /var/lib/slocate

Locateコマンドは、setgid機能を使用して、検索する独自のプロセスグループIDを設定します。これにより、/ var / lib/slocateサブディレクトリの読み取りが許可されます。

あなたの場合、あなた(あなたのインストーラー)は書き込み権限も設定するので、アプリはユーザーに代わってそこにデータを書き込むことができます。

于 2012-11-27T04:27:32.740 に答える
0

私が集めたものから、/ var /lib/ディレクトリは物を置く正しい場所です。これらのディレクトリにアクセスするときは、rootである必要があります。

http://www.freedesktop.org/wiki/Software/polkitツールキットを使用してLinuxの権限を昇格させることができます。(それは自由ソフトウェアです。)

http://www.amug.org/~glguerin/sw/#authkitのようなものがMacで役立つかもしれません。

Linuxでは、gksudoを使用してインストール部分を実行するルーチンを使用することもできます。または、ここに記載されているコマンドを使用します。https://stackoverflow.com/a/690491/1790338

これがいくらか役立つことを願っています。

于 2012-11-27T03:37:19.183 に答える