Как вы можете смонтировать устройство, используя только Java? - PullRequest
0 голосов
/ 26 апреля 2019

Хорошо, я понимаю, что это может быть невозможно ...

У меня есть устройство, на котором работает Linux, и у него, скорее всего, не будет видимого пользовательского интерфейса.Он будет иметь открытый USB-порт ... Я хочу иметь возможность писать java, чтобы позволить всей системе определять, когда устройство подключено к USB-порту, а затем монтировать устройство.

Я знаюкак это сделать из командной строки, но для этого требуется «sudo» для форка нового процесса с повышенными привилегиями для выполнения задачи.Я не знаю, как написать Java-программу, которая может обойти (да, я хочу обойти) защиту монтирования.

runtime.exec () на самом деле не делает то, что я надеюсьвыполнить.Это проблема «не может быть сделано в Java»?

Я надеюсь сделать это, не прибегая к внешнему исполняемому коду.

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Вы не можете обойти защитную защиту горы.Защита не в креплении.Защита находится в ядре.

Если случайно вы найдете способ и опубликуете его, он будет удален.

Если у вас есть контроль над ОС, на которой вы работаете, вы можете добавитьОпция пользователя для точки монтирования в / etc / fstab.После этого «mount / path» и «umount / path» работают с runtime.exec() без повышения прав.mount и umount - setuid-root, чтобы это работало.

0 голосов
/ 26 апреля 2019

Монтирование файлов контролируется операционной системой хоста.Таким образом, управление монтированием осуществляется с помощью системных вызовов.Похоже, вы используете операционную систему Unix, так что это означает, что интерфейсом системного вызова является C. Таким образом, вы можете использовать JNI для вызова небольшой функции C, которая делает необходимым системный вызов.

Но все эти вопросы являются системнымизависимые и привилегированные операции.Таким образом, такой подход создает проблемы переносимости и безопасности.Таким образом, вы могли бы лучше пересмотреть, почему ваша программа сама должна делать это, вместо того, чтобы позволить управляющему компоненту (например, systemd) сделать это за вас.

...