chmod: changing permissions of 'authorized_keys': Operation not permitted
服务器面板 2022-09-13 16:19:35

本身已经是root用户,修改文件发现权限不够

执行完命令发现报错了,被拒绝写入!

登录服务器,发现 authorized_keys 只有读权限,没有写权限。

于是乎很熟悉的给文件加写的权限:

C/C++ Code复制内容到剪贴板
  1. chmod 777 authorized_keys  

 

报错:

chmod: changing permissions of 'authorized_keys': Operation not permitted

 

加上 sudo 继续执行,还是报错!

一般来说,root 用户的权限是最大了,难道还有 root 用户操作不了的文件?

后来经过查找和学习,chmod 的底层实现是 chattr 命令,用此命的功能更为强大,甚至可以锁定文件,即使 root 用户也操作不了此文件。

然后执行下面的命令查看当前文件属性,可以发现有 i 和 a 两个属性:

C/C++ Code复制内容到剪贴板
  1. lsattr authorized_keys  

 

root@dwyyxinserver62:~/.ssh# lsattr authorized_keys

 

----ia--------e--- authorized_keys

 

说明此时的文件是被锁定的,任何用户都是修改不了的,那么我们就去掉这两个属性:

C/C++ Code复制内容到剪贴板
  1. chattr -ia authorized_keys   

 

减号(-)代表去掉的意思,反之加号(+)代表增加的意思。

然后我们给文件加上读写和执行的权限,这样文件的属性就更改了!

C/C++ Code复制内容到剪贴板
  1. chmod 777 authorized_keys  

 

ok, 现在可以写入成功了~

刚才,我们修改了 authorized_keys 文件的权限和锁定,我们现在还要还原回去。

先修改文件的权限,只保留一个读的权限就可以了:

C/C++ Code复制内容到剪贴板
  1. chmod 400 authorized_keys  

 

最后再锁定文件:

C/C++ Code复制内容到剪贴板
  1. chattr +ia authorized_keys   

 

这样就算修改完成了,但是这里有个问题,我们既然设置了使用公私钥验证登录服务器,那么我们就可以禁用掉使用密码登录服务器的这种方式了。

这样做有个好处就是当你的阿里云登录密码不小心别泄露出去了,别人也是登录不上去的,所以更加安全。

 

参考:

shell 免密登录

Mac ssh管理多个服务器 

 

 

 

 

本文来自于:http://www.yoyo88.cn/study/control/635.html

下一篇 ECS数据迁移
Powered by yoyo苏ICP备15045725号