若文件所有者是超級用戶,而且設置了該文件的設置用戶ID位,然后當該程序由一個進程執行時,則該進程具有超級用戶特權。不管執行此文件的進程的實際用戶ID是什么,都進行這種處理。------《unix環境高級編程》1、test程序的權限是776(-rwxrwxrw-),屬于root所有。------>test程序只是一個輸出hello world的程序。2、下面的程序叫exe(-rwxrwxr-x)程序,它是屬于普通用戶所有。#include<apue.h>#include<sys/wait.h>int main(int argc , char* argv[]){ pid_t pid; if((pid = fork()) < 0) err_sys("fork error!"); else if(pid == 0)
{ if(execlp("./test","test",(char*)0) < 0) err_sys("execlp error!");
} if(waitpid(pid,NULL,0) < 0) err_sys("wait error!"); return 0;
}在我沒有設置用戶ID位的情況下,在exe程序中fork一個進程來調用test程序,出現的是permission denied!在我設置用戶ID的情況下,同樣出現的是permission denied!當我把test程序的權限改為(-rwxrwxrwx)的時候,就可以正常運行!如果是這樣的話,那么直接設置其他用戶的權限不就可以了嗎?為什么還需要設置用戶ID呢?抑或是我理解錯誤,exe程序中的那個進程只是具有超級用戶特權,也就是可以做超級用戶可以做的事情,但是進程的實際用戶ID,有效用戶ID都沒有改變?我也對passwd做過同樣的試驗,把passwd的其他用戶執行權限給拿掉以后,如果要修改密碼,就會出現permission denied!
- 2 回答
- 0 關注
- 157 瀏覽
添加回答
舉報
0/150
提交
取消