“sudo -su”到底是什么?

Ryn*_*ald 3 linux authentication terminal

我有一个 linux 用户(user2),它已设置为 shell /usr/sbin/nologin(以阻止登录)。不,当我尝试切换到该用户时,sudo su user2我收到该帐户不可用的信息。但当我使用时sudo -su user它工作正常。

su现在和之间有什么区别-su?或者有什么作用-su。我试图获得有关-h--help或 联机帮助页的帮助,但找不到任何有用的信息。

ala*_*ani 6

sudo -su user是 的缩写sudo -s -u user。该-s选项意味着运行环境变量中指定的 shell SHELL(如果已设置),否则运行用户的登录 shell。该-u user选项意味着以指定用户而不是 root 身份运行该命令。这些选项记录在 下man sudo

sudo su user将用于以 root 用户sudo身份运行该命令。su user然后该su命令将调用指定用户名的登录 shell。该su user命令可以在不使用 的情况下运行sudo,但以 root 身份运行它就不需要目标用户的密码。有关详细信息,请参阅man su

因此,当目标用户与调用用户具有相同的登录 shell 时,这两个命令看起来相似(很大程度上是巧合)并且具有相似的效果。但是,如果SHELL环境变量是在调用用户的环境中设置的(通常是,通常是/bin/bash),并且目标用户具有与此不同的登录 shell(例如/usr/sbin/nologin),则有一个这两个命令执行哪个 shell 之间的差异,这就是您所看到的。