![su 和 sudo 之间的行为差异](https://linux22.com/image/1183673/su%20%E5%92%8C%20sudo%20%E4%B9%8B%E9%97%B4%E7%9A%84%E8%A1%8C%E4%B8%BA%E5%B7%AE%E2%80%8B%E2%80%8B%E5%BC%82.png)
我试图理解使用 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 分钟,此时不再需要密码。(否则工作将立即暂停 - 这只是说暂停的工作不是这种情况。)
我的问题是:
- 我可以让 sudo 立即返回(像 su 一样“表现”),这样就不会再有其他以 root 身份运行的进程继续挂起并可能消耗一些内存(无论这个量有多小)?还是这是设计使然,root 帐户下的第一个进程只需停留在那里,直到实际执行的命令存在?
- 以这种方式调用 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