这是正常的吗?
> 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 ~