Эквивалент pwd.h lib C++ в Java

Я нашел ссылку, которая иллюстрирует использование получения pwd в uid пользователя.

У меня есть подобное требование в Java для запуска скрипта от имени другого пользователя, который нуждается в этой реализации.

Фрагмент кода в C++ выглядит следующим образом:

static void su(const char* user)
{
    struct passwd* pwentry=getpwnam(user);
    if(!pwentry)
        COUT<<"su:getpwnam:couldnot get pwd entry for user %s",user;
    uid_t new_uid=pwentry->pw_uid;
    struct passwd* pwentry_nmsadm=getpwnam("nmsadm");
    if(!pwentry_nmsadm)
        cout<<"su:getpwnam:could not get pwd for nmsadm");
    gid_t new_gid=pwentry->pw_gid;
    if(chdir(pwentry->pw_dir)<0)
        cout<<"su:chdir";
    uid_t current_uid=geteuid();
    gid_t current_gid=getegid();
    if(current_gid!=new_gid)
    {
        if(setgid(new_gid)<0)
        cout<<"su:setgid";
    }
    if(current_uid!=new_uid)
    {
        if(setuid(new_uid)<0)
        cout<<"su: setuid";
    }

Пожалуйста, предложите несколько ссылок, которые могут быть полезными (библиотеки, которые могут быть использованы) или решение вышеуказанного требования в Java.

1 ответ

Java не предоставляет этого готового решения, так как оно зависит от системы и нарушает концепции безопасности Java.

Некоторые возможные решения могут быть:

  • Используйте оболочку JNI для вызова вашего метода C++, чтобы вы могли делать все, что вам нужно, в C++
  • использование ssh запустить скрипт от имени другого пользователя
  • использование sudo запустить скрипт от имени другого пользователя

Смотрите также

Другие вопросы по тегам