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

相关内容