久久青草精品A片狠狠,日韩欧美视频一区二区,亚洲国码AV日韩,国产精品黄在

幫助中心 >  技術知識庫 >  云服務器 >  服務器教程 >  linux在root用戶下無法使用chattr命令的解決辦法

linux在root用戶下無法使用chattr命令的解決辦法

2024-11-22 15:15:55 4345

linux在root用戶下無法使用chattr命令的解決辦法


歡迎來到藍隊云技術小課堂,每天分享一個技術小知識。

在解決linux在root用戶下無法使用chattr命令之前我們先簡單了解下什么是chattr命令。chattr命令用于更改文件或目錄的屬性,包括不可修改屬性、同步屬性、追加屬性、無盡屬性、壓縮屬性、無盡屬性、不可刪除屬性等。

chattr命令只能由超級用戶或文件的所有者使用。

下面我們介紹下chattr命令的使用。

1、給文件設置版本

-v參數設置版本信息只在extX(ext4…)文件系統下支持,xfs文件系統設置文件版本時會報錯對設備不適當的 ioctl 操作。

# chattr -v 2 -V hi.txt

chattr 1.41.12 (17-May-2010)

hi.txt的標志被設為 -------------e-

Version of hi.txt set as 2

# chattr -v 2 -V a.txt

chattr 1.42.9 (28-Dec-2013)

a.txt的標志被設為 ----------------

Version of a.txt set as 2

chattr: 對設備不適當的 ioctl 操作 while setting version on a.txt


2、遞歸設置目錄下文件屬性

# chattr -R -a -V level1-1/

chattr 1.42.9 (28-Dec-2013)

level1-1/的標志被設為 ----------------

level1-1//level2-1的標志被設為 ----------------

level1-1//level2-2的標志被設為 ----------------

level1-1//level2-2/ccc.txt的標志被設為 ----------------

level1-1//level2-3的標志被設為 ----------------

level1-1//bb.txt的標志被設為 ----------------


3、使用-V參數顯示指令執行過程

# chattr -R -a -V level1-1

chattr 1.42.9 (28-Dec-2013)

level1-1的標志被設為 ----------------

level1-1/level2-1的標志被設為 ----------------

level1-1/level2-2的標志被設為 ----------------

level1-1/level2-2/ccc.txt的標志被設為 ----------------

level1-1/level2-3的標志被設為 ----------------

level1-1/bb.txt的標志被設為 ----------------


4、增加一個屬性

# lsattr a.txt

---------------- a.txt

# chattr +i a.txt

# lsattr a.txt

----i----------- a.txt


5、刪除一個屬性

# chattr -i -V a.txt

chattr 1.42.9 (28-Dec-2013)

a.txt的標志被設為 ----------------

# lsattr a.txt

---------------- a.txt


6、指定文件屬性

??使用=指定文件的屬性,實際上文件支持的各屬性之間有部分是沖突的,所以很少用到=參數來指定屬性,常用±參數來增加或者減少一個屬性。


# chattr =iaA -V a.txt

chattr 1.42.9 (28-Dec-2013)

a.txt的標志被設為 ----ia-A--------


三、chattr命令語法及參數說明

1、命令語法

#chattr [參數] 文件或者目錄

#chattr ±=[屬性] 文件或者目錄

#chattr [參數] [屬性] 文件或者目錄


2、參數說明

參數 參數說明

-R 遞歸處理,將指令目錄下的所有文件及子目錄一并處理

-v<版本編號> 設置文件或目錄版本,此參數只適用于extx文件系統

-V 顯示指令執行過程

-f 抑制大多數錯誤信息

+<屬性> 開啟文件或目錄的該項屬性

-<屬性> 關閉文件或目錄的該項屬性

=<屬性> 指定文件或目錄的該項屬性

3、屬性說明

當前主流Linux內核中實現的ext2、ext3和ext4文件系統不支持“c”、“s”和“u”屬性。實際上這些屬性中常用只有a和i,追加屬性長用于日志文件,保證日志文件不會被刪除,只允許追加日志記錄;i屬性用于鎖定重要的配置文件,避免誤刪除或者修改等。


屬性 屬性說明

a 該屬性只允許在文件末尾添加數據,不允許修改或刪除文件的內容。

A 設置該屬性時,文件atime時間不再更新。

c 默認將文件或目錄進行壓縮。

C 設置了“C”屬性的文件將不會進行寫時復制更新。只有在執行寫時復制的文件系統上才支持此標志

d 當進行文件系統備份時,不備份該文件或目錄。

D 當修改具有“D”屬性集的目錄時,更改將同步寫入磁盤;這相當于應用于文件子集的“dirsync”裝載選項。要求內核版本2.5.19以上

i 禁止對文件或目錄進行任何修改操作,包括修改、刪除、重命名等。

j 允許文件系統支持日志功能,只在ext3、ext4環境下支持。

s 當文件被刪除時,將其內容清零。

S 當修改具有“S”屬性集的文件時,更改將同步寫入磁盤;這相當于應用于文件子集的“sync”裝載選項

t 讓文件系統支持尾部合并(tail-merging),只有ext2和ext3支持尾部合并

T 具有“T”屬性的目錄將被視為目錄層次結構的頂部。這是對ext3和ext4使用的塊分配器的一個提示。

u 刪除具有“u”屬性集的文件時,將保存其內容。這允許用戶請求取消刪除。


在學習linux操作系統的時候,想用chattr來修改某一個文件的權限時,突然爆出了以下這個錯誤:

bash /usr/bin/chattr permission denied

考慮到可能是普通用戶權限不夠,我又切換到了root用戶。按理說root用戶的權限是最高的了,結果還是爆出上面那個錯誤。

查閱了國內的相關博客,發現沒有解決這一問題的,于是FQ在外網上找到了解決辦法。

以下是鏈接

# chattr -l-bash: /usr/bin/chattr: Permission denied

# chattr -i chattr

-bash: /usr/bin/chattr: Permission denied

# chmod +x chattrchmod: changing permissions of `chattr': Operation not permitted

為了恢復chattr的功能,解決辦法如下:

# cp /usr/bin/chattr /usr/bin/chattr2

# chmod 755 /usr/bin/chattr2

# chattr2 -i /usr/bin/chattr

# chmod 755 /usr/bin/chattr

# ls -la /usr/bin/chattr  

# lsattr /usr/bin/chattr 

-rwxr-xr-x 1 root root 9664 2010-08-17 01:29 /usr/bin/chattr 

-----------------e- /usr/bin/chattr


大致思路是:復制chattr的副本chattr2,用chmod來修改chattr2的權限(號碼為755)。然后反過來使用chattr2打開chattr的權限,再用chmod修改。最后chattr就能使用了。

通過這個問題的解決,讓我體會對一句話有了深刻的體會:inux一切皆文件

 

補充關于權限:i和a的說明

i:不可修改權限 例:chattr u+i filename 則filename文件就不可修改,無論任何人,如果需要修改需要先刪除i權限,用chattr -i filename就可以了。查看文件是否設置了i權限用lsattr filename。

a:只追加權限, 對于日志系統很好用,這個權限讓目標文件只能追加,不能刪除,而且不能通過編輯器追加。可以使用chattr +a設置追加權限。


藍隊云官網上擁有完善的技術支持庫可供參考,大家可自行查閱,更多技術問題,可以直接咨詢。同時,藍隊云整理了運維必備的工具包免費分享給大家使用,需要的朋友可以直接咨詢。

更多技術知識,藍隊云期待與你一起探索。


提交成功!非常感謝您的反饋,我們會繼續努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務,我們很需要您進一步的反饋信息:

在文檔使用中是否遇到以下問題: