0
我發現了一個link,它說明了如何使用基於用戶的uid獲取pwd。在java中的C++的pwd.h lib的等價物
我有一個類似的需求在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上述要求。
感謝您的指導,但我不能使用SSH或sudo,因爲我不能PWD進入他們爲了執行所需的操作 – Galaxin 2013-04-09 09:19:47