linux使用者標識UID與有效使用者標識EUID

來源:互聯網
上載者:User

linux系統中每個進程都有2個ID,分別為使用者ID和有效使用者ID,UID一般表示進程的建立者(屬於哪個使用者建立),而EUID表示進程對於檔案和資源的存取權限(具備等同於哪個使用者的許可權)。可以通過函數getuid()和geteuid()或者進程的兩個ID值。 當一個使用者登陸系統時,系統會將UID和EUID都賦值為/etc/passwd檔案中的UID,一般情況下2個ID是相同的,但是某些情況下會出現2個ID不同的情況。 以下通過一個典型問題和代碼執行個體來說明UID和EUID的問題。 【關於linux的passwd命令】 passwd命令是用來修改使用者登陸密碼的,用來記錄使用者登陸密碼的檔案為/etc/shadow,該檔案只有root使用者具有存取權限,如下所示:gaolu@gaolu-desktop:~$
gaolu@gaolu-desktop:~$ cd /etc
gaolu@gaolu-desktop:/etc$ ls -l shadow
-rw-r----- 1 root shadow 978 2009-02-22 21:25 shadow
gaolu@gaolu-desktop:/etc$這是出現了矛盾:出於安全考慮,不允許普通使用者查看並修改shadow檔案;但是如果這樣普通使用者就無法為自己修改密碼。Linux系統就是使用setuid來解決這個矛盾的問題:如果一個程式被設定了setuid位,那麼它無論被哪個使用者啟用,都會具備程式所有者的許可權。而passwd程式的所有者是root使用者,passwd的許可權如下所示,那麼任何使用者執行該程式,程式的EUID就會變成root使用者的EUID,而不是執行該程式的UID。gaolu@gaolu-desktop:/etc$ cd /usr/bin
gaolu@gaolu-desktop:/usr/bin$ ls -l passwd
-rwsr-xr-x 1 root root 32988 2008-06-10 02:10 passwd
gaolu@gaolu-desktop:/usr/bin$
gaolu@gaolu-desktop:/usr/bin$因此,普通使用者可以通過passwd程式修改shadow檔案內容,完成密碼修改。 【讓代碼說明問題】#include<stdio.h>#include<unistd.h>#include<sys/types.h> int main(void){printf("Current process UID: %ld/n",(long)getuid());printf("Current process EUID: %ld/n",(long)geteuid()); return 1;} 執行情況:gaolu@gaolu-desktop:~$ gcc -o uid uid.cgaolu@gaolu-desktop:~$
gaolu@gaolu-desktop:~$ chmod u+s uid   //使用者主增加許可權setuid
gaolu@gaolu-desktop:~$ ls -l uid
-rwsr-xr-x 1 gaolu gaolu 9118 2009-03-08 22:26 uid
gaolu@gaolu-desktop:~$
gaolu@gaolu-desktop:~$ ./uid
Current process UID: 1000
Current process EUID: 1000
gaolu@gaolu-desktop:~$
gaolu@gaolu-desktop:~$ su   //切換到root使用者
Password:
root@gaolu-desktop:/home/gaolu# ls -l uid
-rwsr-xr-x 1 gaolu gaolu 9118 2009-03-08 22:26 uid
root@gaolu-desktop:/home/gaolu# ./uid
Current process UID: 0
Current process EUID: 1000   //有效使用者ID為1000
root@gaolu-desktop:/home/gaolu#
root@gaolu-desktop:/home/gaolu# 

本文出自 “淡泊明志,寧靜致遠” 部落格,請務必保留此出處http://keren.blog.51cto.com/720558/144908

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.