我见过人们建议使用/ 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。我正在寻找一种存储数据的方法,不包括那些。
答案 0 :(得分: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子目录。
在您的情况下,您(您的安装程序)也会设置写入权限,以便应用程序可以代表用户在那里写入数据。
答案 1 :(得分: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
希望这有所帮助。