以用户身份登录运行命令与执行 sudo -u 有什么区别

以用户身份登录运行命令与执行 sudo -u 有什么区别

我想知道在 Linux 终端中运行$userA: command line和之间的区别。$userB: sudo -u userA command line

是否有任何特定因素导致文件被创建。例如创建 deb 文件,运行 dpkg-buildpackage 时不应使用 sudo 权限。

答案1

您需要记住的是,运行命令时会发生两件事:

  1. 在这种情况下,用户的权限是什么。
  2. 该命令运行的环境是什么。

当您以特定用户身份登录时,您会更改这两个方面,但是当您使用时,sudo -u您只需更改第一个方面。

考虑一下,假设一个全新安装:

(以用户A身份运行):

vim /home/userA/test

(现在作为用户 B):

sudo -u userA vim /home/userA/test

这两个命令都可以完美运行,您可能直到很晚才会注意到错误。因为在这两个实例中都vim需要为其配置文件创建一个目录。它以以下权限运行:用户A因此这将是目录的所有者,但在第一种情况下,目录将在正确的位置创建:/home/userA/.vim,但在后一种情况下会出现问题,环境仍然指向用户 B 的主目录,因此/home/userB/.vim使用错误的权限创建。

如果您尝试启动一些其他应用程序,如文件管理器(创建缩略图、日志等),您将发现到处都有许多文件,这些文件具有错误的所有者和权限。


您可以注意到pwd显示了您的主目录,并在您的计算机上尝试以下操作:

作为用户A:

pwd
sudo -u userB pwd

两者都应该给你/home/userA/,即使第二个以 userB 身份运行

但是,以用户 B 身份登录然后:

pwd

你现在将看到/home/userB/

相关内容