setuid()與seteuid()的區別
標頭檔案:#include <unistd.h>
定義函式:int setuid(uid_t uid);
函式說明:
setuid()用來重新設定執行目前程式的使用者識別碼. 不過, 要讓此函式有作用, 其有效的使用者識別碼必須為0(root). 在Linux 下, 當root 使用setuid()來變換成其他使用者識別碼時, root 許可權會被拋棄, 完全轉換成該使用者身份, 也就是說, 該程式往後將不再具有可setuid()的權利, 如果只是向暫時拋棄root 許可權, 稍後想重新取回許可權, 則必須使用seteuid().
返回值:執行成功則返回0, 失敗則返回-1, 錯誤程式碼存於errno.
附加說明:一般在編寫具 setuid root 的程式時, 為減少此類程式帶來的系統安全風險, 在使用完root 許可權後建議馬上執行setuid(getuid());來拋棄root 許可權. 此外, 程式uid 和euid 不一致時Linux 系統將不會產生core dump.
定義函式:int setuid(uid_t uid);
函式說明:
setuid()用來重新設定執行目前程式的使用者識別碼. 不過, 要讓此函式有作用, 其有效的使用者識別碼必須為0(root). 在Linux 下, 當root 使用setuid()來變換成其他使用者識別碼時, root 許可權會被拋棄, 完全轉換成該使用者身份, 也就是說, 該程式往後將不再具有可setuid()的權利, 如果只是向暫時拋棄root 許可權, 稍後想重新取回許可權, 則必須使用seteuid().
返回值:執行成功則返回0, 失敗則返回-1, 錯誤程式碼存於errno.
附加說明:一般在編寫具 setuid root 的程式時, 為減少此類程式帶來的系統安全風險, 在使用完root 許可權後建議馬上執行setuid(getuid());來拋棄root 許可權. 此外, 程式uid 和euid 不一致時Linux 系統將不會產生core dump.
相關文章
- setuid()UI
- ??與?:的區別
- MySQL的@與@@區別MySql
- mybatis #與$的區別MyBatis
- Null 與 “” 的區別Null
- &與&&, |與||區別
- in與exist , not in與not exist 的區別
- CentOS 與 Ubuntu 的區別CentOSUbuntu
- artice與section的區別
- GET 與 POST 的區別
- WebSocket 與 Socket 的區別Web
- Postgresql與MySQL的區別MySql
- chown與chmod的區別
- LESS與SASS的區別
- free 與 CFRelease 的區別
- gulp與webpack的區別Web
- @Autowired 與@Resource的區別
- let與var的區別
- post與get的區別
- HashSet與HashMap的區別HashMap
- maven與ant的區別Maven
- __new()__ 與 __init()__的區別
- TCP與UDP的區別TCPUDP
- Mysql與mongodb的區別MySqlMongoDB
- typedef與define的區別
- Eureka與Zookeeper的區別
- buffer與cache的區別
- async與defer的區別
- synchronized與Lock的區別synchronized
- kill與pkill的區別
- int與Integer的區別
- HTML與XHTML的區別HTML
- mysql與Oracle的區別MySqlOracle
- UDP與TCP的區別UDPTCP
- Javascript中“==”與“===”的區別JavaScript
- for...in與for...of的區別
- Oracle - @和@@、&與&& 的區別Oracle
- sizeof與strlen的區別