【发布时间】:2017-10-20 15:39:47
【问题描述】:
我遇到了这个非常奇怪的问题,我只是不明白为什么会这样。当我从我的 shell 手动执行以下命令时,它可以工作。
sudo -u some-user echo "$SSH_KEY" | /home/some-user/.ssh/authorized_keys
但是在 bash 脚本中它失败并显示我们没有任何权限的消息。
#!/bin/bash
sudo -u some-user echo "$SSH_KEY" | /home/some-user/.ssh/authorized_keys
是否有任何 bash 选项可以配置,或者有人可以解释这种行为吗? 对于非交互式终端或类似的东西,它看起来有点像 bash 安全性的东西,但我失去了我的创造力,让谷歌找到了解决方案。
我正在运行 Ubuntu 16.04。
【问题讨论】:
-
从 bash 脚本运行时消息的确切文本是什么?你如何运行 bash 脚本?也许最重要的是,为什么
some-user有一个可执行程序作为他们的授权密钥文件? -
您必须将命令错误地复制到问题中。也许你在复制到脚本时也犯了同样的错误。
-
authorized_keys是一个数据文件,而不是你可以运行的命令,不管有没有sudo。 -
确实忘记输入'echo "sshkey" | ' 在 authorized_key 文件前面。我想在周末前做的最后一件快事????
-
也就是说,您的
sudo仅适用于echo。由于echo不需要any 权限即可运行,所以它完全没用。sudo foo | bar只升级foo,而不是bar;并且sudo foo >> bar以升级权限运行foo,但不使用这些升级权限将bar作为文件打开:该文件在sudo甚至启动之前由shell 打开.
标签: bash ubuntu ubuntu-16.04