Pull to refresh

Comments 8

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

Articles