2013-03-05 71 views

回答

4

使用sudo -u username您可以使用username權限運行程序。就像這樣:

sudo -u youruser yourscript.sh 

如果您不能使用sudo,您可以用followind命令嘗試,爲@Torrius建議:

su - youruser -c "yourscript.sh" 

如果你甚至不能使用後者的解決方案,你可以編寫一個小型的c程序,該程序以參數化的user and group id的權限運行可執行文件。

看看這個概念代碼:

#include <stdio.h> 
#include <unistd.h> 

int main(int argc, char *argv[]) { 

    if (argc < 3) 
    { 
     printf("Usage: ./this [uid] [gid]\n"); 
     return 1; 
    } 

    setuid(atol(argv[1])); 
    setgid(atol(argv[2])); 

    execl("/usr/bin/whoami", "whoami", 0, 0); 

    return 0; 
} 

爲了測試它:

myshell:~ root$ ./a.out 501 501 
davide 

myshell:~ root$ ./a.out -2 -2 
nobody 

myshell:~ root$ ./a.out 1 1 
daemon 
+0

你的答案是在一個共同的全面完成,但我嘗試做這個項目中的其中'sudo'是限制。你有什麼新想法嗎?如果沒有,我會完成這一點。 – Torrius 2013-03-05 18:46:36

+0

用更多選項更新的答案 – 2013-03-05 19:15:55

+0

這種方式也可能有用。 'su - username -c「bash_script」' – Torrius 2013-03-06 15:08:13

相關問題