實現Linux的whoami命令

2021-07-25 09:05:05 字數 705 閱讀 3607

linux下的whoami命令會顯示當前的使用者是誰,也就是顯示自己的使用者名稱。開始我一直想從utmp檔案入手,但是總不知道怎麼確定自己,後來我去群裡問了,他們說每個程序都有使用者id,而使用者id可以通過geteuid系統函式獲得,有了id就好辦了,下面是怎麼將他轉化成乙個使用者名稱,用utmp?沒有uid這個資料,後來知道是查詢/etc/passwd這個檔案,自己寫查詢**很麻煩,還好有個系統呼叫可以解決這個問題,它幫我們查詢passwd檔案,我們只要給出id就可以了

struct passwd* getpwuid(uit_t id)

這樣,實現起來就超 easy了

#include

#include

#include

#include

intmain()

先看看普通使用者和root使用者輸入這三條命令的不同結果:

看出區別來了吧,whoami顯示的是當前「操作使用者」的使用者名稱,而who am i顯示的是「登入使用者」的使用者名稱。

用linux的術語來解釋就是:(實際使用者=uid,即user id。有效使用者=euid,即effective user id)

who am i 顯示的是實際使用者的使用者名稱,即使用者登陸的時候的使用者id。此命令相當於who -m。

whoami  顯示的是有效使用者id(操作使用者).

Python實現Linux環境下的ls命令

在linux下使用ls命令結合正規表示式,能夠高效地進行檔案搜尋,並通過引數操作檔案,於是就想用python實現這個功能以便在windows上使用 import os import re import sys path os.getcwd substr raw input the sub strin...

Linux 系統管理 whoami 命令詳解

whoami命令用於列印當前有效的使用者名稱,相當於執行id un命令。whoami 選項 version 顯示版本資訊。root localhost whoami root root localhost id un root 詳解 下來我們就看看這幾個命令的區別 首先fire登入的是root使用者...

IT部門的業務和開發之爭 Who am I?

最近半年參與了公司乙個hris系統的流程開發,中間經歷坎坷,公司先後選了兩個系統來做bpm business process management 先是salesforce公司的lightning platform,然後中途換上專業做流程的pega。這篇文章並不是要說這兩者的好壞,因為即使換上了業界...