sudo 作為另一個用戶將其主目錄地址保存到 txt 文件

sudo 作為另一個用戶將其主目錄地址保存到 txt 文件

我試圖將用戶主目錄保存到 users.txt 檔案中,但我只是繼續保存自己的主目錄。該腳本要求用戶輸入他們的用戶名,我已將其保存在 $username 中。當我跑步時

ls ~ >> users.txt

它顯示ls home/student/am1014(這是我的用戶名)

我認為我需要使用 sudo 來儲存它,但我不確定如何儲存。

答案1

在:

sudo -u joe ls ~

~在運行命令(此處sudo)之前由 shell 展開,因此實際上運行:

sudo -u joe ls /home/me

joe列出 的主目錄的內容:

ls ~joe

或者,如果您沒有他的主目錄的讀取權限:

sudo -u joe ls ~joe

或對於正在運行的 shell作為joe擴展~

sudo -u joe sh -c 'ls ~'

請注意,除了 in csh//如果使用者名稱位於變數中,tcshzsh無法使用該方法。ls ~joe取決於外殼

user=joe
echo ~$user

會輸出/home/mejoe~joe.在 中bash,如果有一個使用者呼叫$user(字面意思),則會傳回他的主目錄。

在這裡你需要:

eval "ls ~$user"

(您事先已確保$user包含有效的使用者名稱)。

答案2

以下命令將讀取/etc/passwd並輸出username : home-dir

awk -F: '{print $1":" $6}' /etc/passwd

輸出將類似:

root:/root
daemon:/usr/sbin
bin:/bin
sys:/dev
sync:/bin
games:/usr/games

您可以使用以下命令將輸出重定向到檔案:

awk -F: '{print $1":" $6}' /etc/passwd > result.txt

相關內容