我正在以用户“papagolf”的身份工作,这是一个 sudo 用户。我使用以下命令创建了一个新组“hadoop”
papagolf@Sierra:~$ sudo addgroup hadoop
创建了一个用户“haduser”
papagolf@Sierra:~$ sudo adduser --ingroup hadoop haduser
我已经在 papagolf 的 .ssh 目录中创建了 ssh 密钥,并将公钥文件复制到这个新目录中
papagolf@Sierra:~$ cp hadoop_keys.pub /home/haduser/.ssh/
在 .ssh/authorized_keys 中创建了一个新文件
papagolf@Sierra:~$ cd /home/haduser/.ssh/
papagolf@Sierra:/home/haduser/.ssh$ sudo touch authorized_keys
现在我想将 .pub 文件的内容复制到authorized_keys但我收到一条错误消息,说权限被拒绝。我想知道为什么即使我是 sudo 用户也会发生这种情况。
papagolf@Sierra:/home/haduser/.ssh$ sudo cat hadoop_keys.pub >> authorized_keys
bash: authorized_keys: Permission denied
现在我尝试了这个并且成功了
papagolf@Sierra:/home/haduser/.ssh$ sudo -i
root@Sierra:/home/haduser/.ssh# cat hadoop_keys.pub >> authorized_keys
有什么不同?为什么会发生错误?
答案1
在 Ipor Sircer 提到的问题中,您将找到如何实现您的目标。
我只会添加简短的解释。流重定向(在本例中为 >>)是由 shell 完成的,而不是使用 sudo 运行的进程,因此您的 shell(papagolf 的 shell)仍然无权写入其他用户目录。这就是为什么人们使用 tee 或 sed 来做到这一点。