将一个文件的内容复制到另一个文件时权限被拒绝

将一个文件的内容复制到另一个文件时权限被拒绝

我正在以用户“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 来做到这一点。

相关内容