0

我见过有人建议 /var/lib 但这在我的系统上不起作用。/var 的每个子目录都是只读的,除了 /var/lock 和 /var/log。

我是否只需要编写一个 Linux shell 脚本来授予超级用户访问权限?还是有基于 Java 的解决方案?

/bin 和 /usr 都是系统文件目录,所以我不想(也不能)将文件存储在那里。

只要应用程序只需要在用户内部操作我就可以使用:

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

为数据目录。

但是持久的系统范围的数据呢?那要去哪里?

额外说明:我的 MacOS 也有这个问题。我可以将 /user/Library/Application Support 用于特定于用户的数据,但我无法访问全局目录。

第二个注意事项:我知道并使用了 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 设置为locate,这赋予它读取 /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 回答