我正在开发一个可在Linux上运行的Java SE应用程序。 该应用程序将一些文件和目录存储在磁盘上。
我只需要应用程序本身就能读/写这些文件/目录(即当前登录的用户不能使用OS文件管理器读/写/复制这些文件)。
我尝试创建用户和用户组,并将文件的权限更改为600,将目录更改为700
问题是应用程序以当前登录用户身份运行,因此它将当前用户的文件存储为所有者
如果我对文件chown
,那么应用程序就不能再读取文件了!
如何限制文件/目录访问应用程序?
答案 0 :(得分:1)
我认为setuid
是您的选择。有关详细信息,请参见手册这是wikipage,也是一个很好的参考。
每个程序都有uid/gid
和euid/egid
,您的euid/egid
应该与文件访问权限相匹配。
详细信息,IIRC,您应该运行Java SE程序,如java mainclass
或java -jar main.jar
。在脚本中编写启动命令,例如run.sh
。
FILE BEGIN run.sh
java mainclass # or java -jar main.jar choose one appropriate to you
文件结束
然后sudo chown root run.sh
然后sudo chmod ug+s run.sh
。
这假设您处于sudoer列表中。如果没有,你必须求助于SA。
答案 1 :(得分:0)
这是不可能的。用户与他们运行的程序之间的权限没有区别。