Comments 8
Q: Как запустить код под другим пользователем в Windows из Java?
A: JNI+WinAPI.
A: JNI+WinAPI.
+1
А под Линуксом реально реализовать?
+1
Точно можно сделать с помощью команды su. Но это будет выполняться процесс. Аналог функции LogonUser в Linux я не знаю. В google тоже не нашёл.
0
Ее не может быть. В Windows система авторизации одна, является частью системы и поэтому программа может полагаться на то, что эта функция есть и работает как предполагалось. В UNIX — не так. Там другой принцип — родительский демон работает под рутом, а при входе пользователя создается отдельный поток, права в котором понижены до прав авторизовавшегося юзера. Сам юзер имеет дело только с дочерним потоком с пониженными правами.
+1
В линуксе это делается с помощью setuid, причем, насколько я понял, права можно только понижать. То есть будет как раз та ситуация, которую описал k41n в соседнем комменте: родительский процесс под рутом, дочерний поток/процесс — под обычным юзером.
+1
Выставить suid бит на файл. Правда при запуске из баш скриптов через java -jar права процесса будут соответствовать не правам jar файла, а правам на скрипт, потому как при таком запуске запуске права на jar файл будут игнорироваться JVM.
0
Не совсем уданчый пример наверно. Пишем софтинку которя читает файлы под другим пользователем, при условии что текущий пользователь в курсе креденшелов другой учётки. Помоему велосипед, пользователь можнт просто зайти под другой сессией или запустить файл менеджер под той учёткой и всех делов то. Даже незнаю какое более удачное применние этому коду можно дать.
-1
Sign up to leave a comment.
Запуск кода под другим пользователем в Windows из Java