您好我需要将一些文件放在某个目录中,我自己作为用户没有权利,但对于管理员有权限。在这种情况下,我希望我的程序应该要求管理员用户名和密码。如果我输入正确的管理员用户名和密码,那么我必须能够将该文件夹放在该目录中。否则我应该收到错误用户名和密码的消息框
由于 Sunil Kumar Sahoo
答案 0 :(得分:2)
AFAIK你不能仅用Java做这件事,你可能需要JNI。
答案 1 :(得分:1)
至少在类Unix操作系统(例如Linux)中,你不可能在Java中做到这一点,甚至不能用JNI。您需要一个二进制可执行文件(不是shell脚本,java程序等),由root拥有,并设置set-user-ID-on-execution位。该程序应该(但在技术上,不必)检查您是否被允许做您想做的事情(通过询问您的密码或其他)并为您执行操作。 BTW,su
和sudo
都是这样的。
另一种可能性,我认为这是Windows中的标准方法,是运行守护程序(由管理员启动,因此它具有必要的权限),并且此守护程序等待处理命令(通过某种方式的IPC) ,网络等),检查是否应该允许用户这样做(但这是确定的)并最终处理这些命令。
答案 2 :(得分:1)
在java中不可能。未经root / admin许可,用户不能在根文件系统中使用任何文件夹或目录。该文件夹需要管理员权限。
答案 3 :(得分:0)
创建一个文件夹,使权限如下:(但你可以选择!)
如果您(和“其他人”)希望能够将文件保存,复制或移动到此文件夹中,但是看不到其内容,请选择此选项:
___________________________________
| | User | R | W | X | Val |
|--------+--------+---+---+---+-----|
| user | you | X | √ | X | 2 |
| group | admins | √ | √ | √ | 7 |
| others | N/A | X | √ | X | 2 |
|________|________|___|___|___|_____|
如果您(和“其他人”)不应拥有此文件夹的任何权限,请选择此选项:
___________________________________
| | User | R | W | X | Val |
|--------+--------+---+---+---+-----|
| user | you | X | X | X | 0 |
| group | admins | √ | √ | √ | 7 |
| others | N/A | X | X | X | 0 |
|________|________|___|___|___|_____|
这会解决您的问题还是我误解了?
答案 4 :(得分:0)
从Java 1.6开始,java.io.File具有以下方法:
猜猜他们做了什么。有一个boolean ownerOnly
的重载方法。如果您已经以管理员身份登录,这应该是解决方案(更多;在Windows中,如果您已经不是管理员,则无法提供仅限管理员的文件权限。)