眾所周知,在linux系統中,權限最大的是root賬號,但凡修改涉及到系統本身的重大權限的操作,都需要root的權限才能操作。但是有些時候也有root干不了的事情。
比如:chmod: changing permissions of 'authorized_keys': Operation not permitted
問題背景和解決
-
部署在服務器上的redis緩存數據庫被提示有高危風險,根據提出的改進意見,則是修改ssh/下的authorized_keys這個文件夾的權限為所有者只讀。
-
修改文件權限,我們可以看到報了沒有權限這個錯誤(Operation not permitted),如圖:
-
一般我們都知道,Linux下root用戶的權限是最大了,難道還有root用戶操作不了的文件?(Linux下UID數值越小的用戶,權限越大,可以看到最小值為0,即root用戶)
-
其實chmod的底層實現是chattr命令,用此命的功能更為強大,甚至可以鎖定文件,即使root用戶也操作不了此文件。
-
chattr是用來更改文件屬性,lsattr可用來查看文件的屬性,執行命令lsattr authorized_keys查看當前文件屬性,可以發現有i和a兩個屬性。
-
那么我們就去掉這兩個屬性。
chattr -ia authorized_keys
- 然后我們chmod 400 authorized_keys即可。就可將文件的屬性更改了。
- 最后恢復取消掉的那倆屬性。
chattr +ia authorized_keys