su 和 sudo 之间的行为差​​异

su 和 sudo 之间的行为差​​异

我试图理解使用 sudo 和 su 运行命令时观察到的以下差异。我已将其简化为最简单的形式。

考虑以下两个命令:

su - myuser -c "sleep 600s &"
sudo -u myuser sleep 600s &

在使用时ps axu | grep sudo,su 命令仅为 myuser 生成一个进程。同时,sudo 命令生成两个进程:一个以 root 身份使用命令sudo -u myuser sleep 600s &,另一个以 myuser 身份使用命令sleep 60s

这是在 sudo 宽限期内运行其他命令之后发生的,我认为宽限期为 5-15 分钟,此时不再需要密码。(否则工作将立即暂停 - 这只是说暂停的工作不是这种情况。)

我的问题是:

  1. 我可以让 sudo 立即返回(像 su 一样“表现”),这样就不会再有其他以 root 身份运行的进程继续挂起并可能消耗一些内存(无论这个量有多小)?还是这是设计使然,root 帐户下的第一个进程只需停留在那里,直到实际执行的命令存在?
  2. 以这种方式调用 su 是否类似于使用选项 -l/-s/-i 调用 sudo?

谢谢。

krzysztof@Alan: ~$ ▶ uname -a
Linux Alan.local 5.4.0-86-generic #97-Ubuntu SMP Fri Sep 17 19:19:40 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
krzysztof@Alan: ~$ ▶ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.3 LTS
Release:    20.04
Codename:   focal

相关内容