2009-11-11 6 views
0

Привет, мне нужно поместить некоторые файлы в какой-то каталог, который сам, как пользователь, не имеет прав, но у администратора есть права. В этом случае я хочу, чтобы моя программа запрашивала имя пользователя и пароль администратора. Если я поставлю правильное имя пользователя и пароль администратора, то я должен уметь помещать папку в этот каталог. В противном случае я должен получить окно сообщения для неправильного имени пользователя и пароляКак создать папку в каталоге, где пользователю необходимо разрешение администратора

Спасибо Сунил Кумар Sahoo

ответ

1

Его невозможно в java. без разрешения root/admin пользователь не может уклониться от какой-либо папки или каталога в корневой файловой системе. Папка нуждается в доступе администратора.

0

Создайте папку таким образом, что разрешения являются следующими: (! Но вы получите выбор)

Выберите это вариант, если вы (и «другие») хотят, чтобы иметь возможность сохранять, копировать или перемещать файлы в эту папку, но не увидеть ее содержимое:

___________________________________ 
|  | User | R | W | X | Val | 
|--------+--------+---+---+---+-----| 
| user | you | X | √ | X | 2 | 
| group | admins | √ | √ | √ | 7 | 
| others | N/A | X | √ | X | 2 | 
|________|________|___|___|___|_____| 

Выберите эту опцию, если вы (и ' другие) не должны иметь никаких приватных ilege к этой папке:

___________________________________ 
|  | User | R | W | X | Val | 
|--------+--------+---+---+---+-----| 
| user | you | X | X | X | 0 | 
| group | admins | √ | √ | √ | 7 | 
| others | N/A | X | X | X | 0 | 
|________|________|___|___|___|_____| 

Это решение проблемы, или я неверно истолковал ее?

+1

Обе таблицы являются одинаковыми приятелями. :) –

+0

Упс, я скопировал и вложил его, но забыл изменить второй. :) –

2

AFAIK Вы не можете сделать это с помощью Java только, вам может понадобиться JNI.

+0

Нужно ли это делать с помощью Java или неправильно помечено? Похоже, она могла это сделать через 'chmod' и др., Но тег' Java', кажется, вводит в заблуждение. –

+1

JNI - это интерфейс Java Native, который является единственной возможностью изменения разрешений и т. Д. От Java – abyx

+0

Я хочу сделать то же самое, используя java –

1

По крайней мере, в Unix-подобных операционных системах (например, Linux) вы не можете делать это на Java, даже с JNI. Вам нужен бинарный исполняемый файл (не скрипт оболочки, java-программа и т. Д.), Принадлежащий root, с установленным битом set-user-ID-on-execution. Эта программа должна (но технически, не обязана) проверять, что вам разрешено делать то, что вы хотите сделать (попросив вас пароль или что-то еще) и выполните операцию для вас. BTW, su и sudo - вот так.

Другая возможность, и я думаю, что это стандартный способ в Windows, заключается в том, чтобы запустить программу-демон (начатую администратором, так что она имеет необходимые привилегии), и этот демон ждет обработки команд (некоторыми способами IPC, сеть и т. Д.), Проверяет, разрешено ли пользователю делать это (однако это определяется) и в конечном итоге обрабатывает эти команды.

0

Поскольку Java 1.6 java.io.File имеет следующие методы:

  1. setReadable()
  2. setWritable()
  3. setExecutable()

сделать предположение, что они делают. Существует перегруженный метод с boolean ownerOnly. Это должно быть решением, если вы уже вошли в систему как администратор (еще больше, в Windows невозможно предоставить права администратора только для файлов, если вы уже не администратор).

Смежные вопросы