- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會理事單位
- 安全聯(lián)盟認(rèn)證網(wǎng)站身份V標(biāo)記
- 域名注冊服務(wù)機(jī)構(gòu)許可:滇D3-20230001
- 代理域名注冊服務(wù)機(jī)構(gòu):新網(wǎng)數(shù)碼
linux在root用戶下無法使用chattr命令的解決辦法
歡迎來到藍(lán)隊(duì)云技術(shù)小課堂,每天分享一個(gè)技術(shù)小知識。
在解決linux在root用戶下無法使用chattr命令之前我們先簡單了解下什么是chattr命令。chattr命令用于更改文件或目錄的屬性,包括不可修改屬性、同步屬性、追加屬性、無盡屬性、壓縮屬性、無盡屬性、不可刪除屬性等。
chattr命令只能由超級用戶或文件的所有者使用。
下面我們介紹下chattr命令的使用。
1、給文件設(shè)置版本
-v參數(shù)設(shè)置版本信息只在extX(ext4…)文件系統(tǒng)下支持,xfs文件系統(tǒng)設(shè)置文件版本時(shí)會報(bào)錯對設(shè)備不適當(dāng)?shù)?ioctl 操作。
# chattr -v 2 -V hi.txt
chattr 1.41.12 (17-May-2010)
hi.txt的標(biāo)志被設(shè)為 -------------e-
Version of hi.txt set as 2
# chattr -v 2 -V a.txt
chattr 1.42.9 (28-Dec-2013)
a.txt的標(biāo)志被設(shè)為 ----------------
Version of a.txt set as 2
chattr: 對設(shè)備不適當(dāng)?shù)?ioctl 操作 while setting version on a.txt
2、遞歸設(shè)置目錄下文件屬性
# chattr -R -a -V level1-1/
chattr 1.42.9 (28-Dec-2013)
level1-1/的標(biāo)志被設(shè)為 ----------------
level1-1//level2-1的標(biāo)志被設(shè)為 ----------------
level1-1//level2-2的標(biāo)志被設(shè)為 ----------------
level1-1//level2-2/ccc.txt的標(biāo)志被設(shè)為 ----------------
level1-1//level2-3的標(biāo)志被設(shè)為 ----------------
level1-1//bb.txt的標(biāo)志被設(shè)為 ----------------
3、使用-V參數(shù)顯示指令執(zhí)行過程
# chattr -R -a -V level1-1
chattr 1.42.9 (28-Dec-2013)
level1-1的標(biāo)志被設(shè)為 ----------------
level1-1/level2-1的標(biāo)志被設(shè)為 ----------------
level1-1/level2-2的標(biāo)志被設(shè)為 ----------------
level1-1/level2-2/ccc.txt的標(biāo)志被設(shè)為 ----------------
level1-1/level2-3的標(biāo)志被設(shè)為 ----------------
level1-1/bb.txt的標(biāo)志被設(shè)為 ----------------
4、增加一個(gè)屬性
# lsattr a.txt
---------------- a.txt
# chattr +i a.txt
# lsattr a.txt
----i----------- a.txt
5、刪除一個(gè)屬性
# chattr -i -V a.txt
chattr 1.42.9 (28-Dec-2013)
a.txt的標(biāo)志被設(shè)為 ----------------
# lsattr a.txt
---------------- a.txt
6、指定文件屬性
??使用=指定文件的屬性,實(shí)際上文件支持的各屬性之間有部分是沖突的,所以很少用到=參數(shù)來指定屬性,常用±參數(shù)來增加或者減少一個(gè)屬性。
# chattr =iaA -V a.txt
chattr 1.42.9 (28-Dec-2013)
a.txt的標(biāo)志被設(shè)為 ----ia-A--------
三、chattr命令語法及參數(shù)說明
1、命令語法
#chattr [參數(shù)] 文件或者目錄
#chattr ±=[屬性] 文件或者目錄
#chattr [參數(shù)] [屬性] 文件或者目錄
2、參數(shù)說明
參數(shù) 參數(shù)說明
-R 遞歸處理,將指令目錄下的所有文件及子目錄一并處理
-v<版本編號> 設(shè)置文件或目錄版本,此參數(shù)只適用于extx文件系統(tǒng)
-V 顯示指令執(zhí)行過程
-f 抑制大多數(shù)錯誤信息
+<屬性> 開啟文件或目錄的該項(xiàng)屬性
-<屬性> 關(guān)閉文件或目錄的該項(xiàng)屬性
=<屬性> 指定文件或目錄的該項(xiàng)屬性
3、屬性說明
當(dāng)前主流Linux內(nèi)核中實(shí)現(xiàn)的ext2、ext3和ext4文件系統(tǒng)不支持“c”、“s”和“u”屬性。實(shí)際上這些屬性中常用只有a和i,追加屬性長用于日志文件,保證日志文件不會被刪除,只允許追加日志記錄;i屬性用于鎖定重要的配置文件,避免誤刪除或者修改等。
屬性 屬性說明
a 該屬性只允許在文件末尾添加數(shù)據(jù),不允許修改或刪除文件的內(nèi)容。
A 設(shè)置該屬性時(shí),文件atime時(shí)間不再更新。
c 默認(rèn)將文件或目錄進(jìn)行壓縮。
C 設(shè)置了“C”屬性的文件將不會進(jìn)行寫時(shí)復(fù)制更新。只有在執(zhí)行寫時(shí)復(fù)制的文件系統(tǒng)上才支持此標(biāo)志
d 當(dāng)進(jìn)行文件系統(tǒng)備份時(shí),不備份該文件或目錄。
D 當(dāng)修改具有“D”屬性集的目錄時(shí),更改將同步寫入磁盤;這相當(dāng)于應(yīng)用于文件子集的“dirsync”裝載選項(xiàng)。要求內(nèi)核版本2.5.19以上
i 禁止對文件或目錄進(jìn)行任何修改操作,包括修改、刪除、重命名等。
j 允許文件系統(tǒng)支持日志功能,只在ext3、ext4環(huán)境下支持。
s 當(dāng)文件被刪除時(shí),將其內(nèi)容清零。
S 當(dāng)修改具有“S”屬性集的文件時(shí),更改將同步寫入磁盤;這相當(dāng)于應(yīng)用于文件子集的“sync”裝載選項(xiàng)
t 讓文件系統(tǒng)支持尾部合并(tail-merging),只有ext2和ext3支持尾部合并
T 具有“T”屬性的目錄將被視為目錄層次結(jié)構(gòu)的頂部。這是對ext3和ext4使用的塊分配器的一個(gè)提示。
u 刪除具有“u”屬性集的文件時(shí),將保存其內(nèi)容。這允許用戶請求取消刪除。
在學(xué)習(xí)linux操作系統(tǒng)的時(shí)候,想用chattr來修改某一個(gè)文件的權(quán)限時(shí),突然爆出了以下這個(gè)錯誤:
bash /usr/bin/chattr permission denied
考慮到可能是普通用戶權(quán)限不夠,我又切換到了root用戶。按理說root用戶的權(quán)限是最高的了,結(jié)果還是爆出上面那個(gè)錯誤。
查閱了國內(nèi)的相關(guān)博客,發(fā)現(xiàn)沒有解決這一問題的,于是FQ在外網(wǎng)上找到了解決辦法。
以下是鏈接
# 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
為了恢復(fù)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
大致思路是:復(fù)制chattr的副本chattr2,用chmod來修改chattr2的權(quán)限(號碼為755)。然后反過來使用chattr2打開chattr的權(quán)限,再用chmod修改。最后chattr就能使用了。
通過這個(gè)問題的解決,讓我體會對一句話有了深刻的體會:inux一切皆文件
補(bǔ)充關(guān)于權(quán)限:i和a的說明
i:不可修改權(quán)限 例:chattr u+i filename 則filename文件就不可修改,無論任何人,如果需要修改需要先刪除i權(quán)限,用chattr -i filename就可以了。查看文件是否設(shè)置了i權(quán)限用lsattr filename。
a:只追加權(quán)限, 對于日志系統(tǒng)很好用,這個(gè)權(quán)限讓目標(biāo)文件只能追加,不能刪除,而且不能通過編輯器追加。可以使用chattr +a設(shè)置追加權(quán)限。
藍(lán)隊(duì)云官網(wǎng)上擁有完善的技術(shù)支持庫可供參考,大家可自行查閱,更多技術(shù)問題,可以直接咨詢。同時(shí),藍(lán)隊(duì)云整理了運(yùn)維必備的工具包免費(fèi)分享給大家使用,需要的朋友可以直接咨詢。
更多技術(shù)知識,藍(lán)隊(duì)云期待與你一起探索。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP