chmod: changing permissions of 'authorized_keys': Operation not permitted
本身已经是root用户,修改文件发现权限不够
执行完命令发现报错了,被拒绝写入!
登录服务器,发现 authorized_keys 只有读权限,没有写权限。
于是乎很熟悉的给文件加写的权限:
C/C++ Code复制内容到剪贴板
- chmod 777 authorized_keys
报错:
chmod: changing permissions of 'authorized_keys': Operation not permitted
加上 sudo 继续执行,还是报错!
一般来说,root 用户的权限是最大了,难道还有 root 用户操作不了的文件?
后来经过查找和学习,chmod 的底层实现是 chattr 命令,用此命的功能更为强大,甚至可以锁定文件,即使 root 用户也操作不了此文件。
然后执行下面的命令查看当前文件属性,可以发现有 i 和 a 两个属性:
C/C++ Code复制内容到剪贴板
- lsattr authorized_keys
root@dwyyxinserver62:~/.ssh# lsattr authorized_keys
----ia--------e--- authorized_keys
说明此时的文件是被锁定的,任何用户都是修改不了的,那么我们就去掉这两个属性:
C/C++ Code复制内容到剪贴板
- chattr -ia authorized_keys
减号(-)代表去掉的意思,反之加号(+)代表增加的意思。
然后我们给文件加上读写和执行的权限,这样文件的属性就更改了!
C/C++ Code复制内容到剪贴板
- chmod 777 authorized_keys
ok, 现在可以写入成功了~
刚才,我们修改了 authorized_keys 文件的权限和锁定,我们现在还要还原回去。
先修改文件的权限,只保留一个读的权限就可以了:
C/C++ Code复制内容到剪贴板
- chmod 400 authorized_keys
最后再锁定文件:
C/C++ Code复制内容到剪贴板
- chattr +ia authorized_keys
这样就算修改完成了,但是这里有个问题,我们既然设置了使用公私钥验证登录服务器,那么我们就可以禁用掉使用密码登录服务器的这种方式了。
这样做有个好处就是当你的阿里云登录密码不小心别泄露出去了,别人也是登录不上去的,所以更加安全。
参考:
下一篇 ECS数据迁移