Linux進程的實際使用者ID和有效使用者ID__Linux

來源:互聯網
上載者:User

在Linux中,每個檔案都有其所屬的使用者和使用者組,預設情況下是檔案的建立者,也可以根據chown和chgrp來修改檔案所屬的使用者和使用者組。檔案的屬性存放在屬性結構stat中,其中有st_uid和st_gid標誌著。


先舉個例子。假設現在系統中有兩個使用者liz和hlf,有一個程式檔案file的所屬使用者為hlf。然後使用liz使用者登入系統,運行file檔案,則運行進程process有一個實際使用者和有效使用者,實際使用者預設為當前登入使用者,即liz。而有效使用者呢。有效使用者是哪個得看file檔案的屬性了,屬性結構stat裡有個st_mode檔案模式字,其中有一個設定-使用者-ID位,如果沒有設定這個位的話,那任何執行file檔案的進程的有效使用者就是其實際使用者;如果設定了這個位的話,則執行file檔案的進程的有效使用者就是該file檔案所屬使用者了。這裡,如果設定了該位,則有效使用者就為hlf,否則就為實際使用者liz了。


這裡需要說明實際使用者ID和有效使用者ID的作用。實際使用者是用來標識進程是誰,是誰在執行進程,一般是登入使用者;而有效使用者ID則標識這該進程的存取權限,假設進程的實際使用者為liz,而有效使用者為hlf,則進程可以可以訪問hlf使用者可以訪問的檔案,即擁有與hlf一樣的許可權(注意不是能夠訪問hlf的檔案)。


下面以一個程式來說明一下這整個過程。


首先,我們用root使用者產生一個可執行檔test。





然後將test檔案的所有者改成hlf使用者。




然後使用liz使用者登入到系統,執行test檔案,則根據理論,沒有設定設定-使用者-ID位,則進程的實際使用者ID和有效使用者ID都為liz。我們先查看一下使用者的ID是多少,系統使用者ID號存放在/etc/passwd檔案中。




然後在liz登入之後運行test檔案的結果如下:




可以看出實際使用者和有效使用者均為1000,即liz。現在我們修改一下test檔案的設定-使用者-ID位。




然後再在liz中運行test檔案的結果如下:




可以看出,有效使用者ID變為1001了,即為hlf了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.