使用ansible的时候,有一台主机连不上了,想要重新生成公钥,然后用scp把公钥文件传送到目标主机。传送的时候报
scp: /root/.ssh/authorized_keys: Operation not permitted
这个应该是目标主机的该文件的隐藏属性的锅
解决方法是
1.查看该文件的隐藏属性
2.去掉隐藏属性
[root@instance-0cvwqbq0 .ssh]# lsattr authorized_keys
-----a-------e-- authorized_keys
[root@instance-0cvwqbq0 .ssh]# chattr -a authorized_keys
[root@instance-0cvwqbq0 .ssh]# chattr -e authorized_keys
然后去百度了下,linux的隐藏属性的资料
隐藏权限的参数及其作用
i 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
a 仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
S 文件内容在变更后立即同步到硬盘(sync)
s 彻底从硬盘中删除,不可恢复(用 0 填充原文件所在硬盘区域)
A 不再修改这个文件或目录的最后访问时间(atime)
b 不再修改文件或目录的存取时间
D 检查压缩文件中的错误
d 使用 dump 命令备份时忽略本文件/目录
c 默认将文件或目录进行压缩
u 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
t 让文件系统支持尾部合并(tail-merging)
X 可以直接访问压缩文件中的内容
首先要使用lsattr 去查看文件的隐藏属性,然后再去掉具体的隐藏属性