sudo -i 仅允许一个参数

sudo -i 仅允许一个参数

这是正常的吗?

> sudo -u misc -i "ls"
note test tmp
> sudo -u misc -i "ls ~"
-bash: ls ~: command not found
> sudo -u misc -i "ls ~"
-bash: ls ~: command not found
> sudo -u misc -i "foo=bar"
[misc]

任何带有空格的内容似乎都会被解释为单个命令,无法识别。更奇怪的是,设置任何环境变量都会让我进入其他用户的帐户。我该如何按预期运行这些命令?

答案1

传递给的命令和参数sudo不应该用引号引起来,因此您可以尝试

sudo -u misc -i ls -l

sudo -u misc -i ls ~

不应列出misc的主目录内容,而是您的主目录,因为该~字符已展开已传递给sudo。你可以尝试使用

sudo -u misc -i ls '~'

但这再次不起作用,因为sudo不调用 shell 来执行其命令,因此~脱离 shell 没有任何意义。

最后,解决方案可能是

sudo -u misc -i bash -c 'ls ~'

答案2

它对我有用,但没有引号:

sudo -u 测试 -i ls -lah ~

相关内容