![sudo -i 仅允许一个参数](https://linux22.com/image/1107412/sudo%20-i%20%E4%BB%85%E5%85%81%E8%AE%B8%E4%B8%80%E4%B8%AA%E5%8F%82%E6%95%B0.png)
这是正常的吗?
> 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 ~