linux 文件怎么不让删,请问如何设置权限,可以禁止用户删除文件
原帖由 WHITLACK 于 2009-9-28 08:48 發(fā)表
針對(duì)某個(gè)文件,如何設(shè)置權(quán)限,可以禁止刪除?
文件權(quán)限的r-w-x好像不能禁止刪除的啊,
謝謝指教!
1:使用粘滯位可以做到,下面是介紹.
強(qiáng)制位與冒險(xiǎn)位、粘滯位
針對(duì)u,g,o,分別可設(shè) set uid,set gid,及sticky bit(粘滯位)。
強(qiáng)制位與冒險(xiǎn)位、粘滯位添加在執(zhí)行權(quán)限的位置上。如果該位置上原已有執(zhí)行權(quán)限,則強(qiáng)制位與冒險(xiǎn)位以小寫(xiě)字母s或t的方式表示;否則,以大寫(xiě)字母表示,大寫(xiě)字母S、T表示為空。(因?yàn)槲募旧砭筒痪邆鋱?zhí)行權(quán)限,那就沒(méi)有權(quán)限給其他人使用了,所以為空。)
set uid與set gid在u和g的x位置上各采用一個(gè)s,sticky使用一個(gè)t。
suid: 意味著如果某個(gè)用戶(hù)對(duì)屬于自己的程序(只適用于二進(jìn)制程序且對(duì)目錄無(wú)效)設(shè)置了這種權(quán)限,那么其他用戶(hù)在執(zhí)行這程序時(shí),就會(huì)暫時(shí)具有該文件擁有者的權(quán)限,完成之后恢復(fù)對(duì)應(yīng)的權(quán)限。 對(duì)于shell腳本無(wú)效,因?yàn)閟hell腳本是將很多二進(jìn)制執(zhí)行文件調(diào)用而已,所以suid的權(quán)限部分還是要看shell腳本調(diào)用進(jìn)來(lái)的程序設(shè)置,而不是shell腳本本身。
例如password命令
[root@node1 ~]# ll /usr/bin/passwd
-rwsr-xr-x 1 root root 22960 Jul 17??2006 /usr/bin/passwd
[root@node1 ~]#
sgid: 可以用在兩個(gè)方面:
文件:如果sgid設(shè)置在二進(jìn)制文件上,則不論用戶(hù)是誰(shuí),執(zhí)行該程序的時(shí)候,它的有效用戶(hù)組將會(huì)變成該程序的用戶(hù)組所有者。
目錄:如果sgid是設(shè)置在A目錄上,那么則該A目錄內(nèi)所建立的文件或目錄的用戶(hù)組將會(huì)是A目錄的用戶(hù)組。如tmp目錄。
sticky Bit: 當(dāng)前只針對(duì)目錄有效,對(duì)文件無(wú)效。默認(rèn)情況下,如果一個(gè)目錄上有w和x權(quán)限,則任何人可以在此目錄中建立與刪除文件。但是如果在該目錄上設(shè)置了sticky Bit,、那么在該目錄中創(chuàng)建的文件或目錄,只有文件的擁有者與系統(tǒng)管理員(root)才有權(quán)限刪除該文件。
強(qiáng)制位與冒險(xiǎn)位、粘滯位對(duì)應(yīng)的權(quán)限數(shù)字為:
suid:4
sgid:2
sticky Bit: 1
2:使用chattr命令
功能介紹
設(shè)置文件隱藏屬性,使用權(quán)限超級(jí)用戶(hù)(chattr changes the file attributes on a Linux second extended file system.)。
語(yǔ)法格式
chattr [-RV] [-+=AacDdijsSu] [-v version] 文件或目錄
參數(shù)
-R:遞歸處理所有的文件及子目錄。
-V:詳細(xì)顯示修改內(nèi)容,并打印輸出。
-:取消某個(gè)特殊參數(shù)。
+:增加某個(gè)特殊參數(shù)。
= :指定特定的參數(shù)。
A:Atime,告訴系統(tǒng)不要修改對(duì)這個(gè)文件的最后訪(fǎng)問(wèn)時(shí)間。
S:Sync,當(dāng)應(yīng)用程序?qū)@個(gè)文件執(zhí)行了寫(xiě)操作,使系統(tǒng)立刻把修改的結(jié)果寫(xiě)到磁盤(pán)。
s:當(dāng)文件設(shè)置了s參數(shù)時(shí),它將會(huì)徹底從這個(gè)硬盤(pán)空間中刪除掉,它的數(shù)據(jù)塊會(huì)用0填寫(xiě)。
a:Append Only,系統(tǒng)只允許在這個(gè)文件之后增加數(shù)據(jù),而不能刪除這個(gè)文件。如果目錄具有這個(gè)屬性,系統(tǒng)將只允許在這個(gè)目錄下建立文件,而不允許刪除任何文件,也不允許修改目錄下原有的文件。只有root用戶(hù)可以設(shè)置這個(gè)屬性。
i:Immutable,系統(tǒng)不允許對(duì)這個(gè)文件進(jìn)行任何的修改,包括刪除、修改、設(shè)置連接(可以設(shè)置軟鏈接),也無(wú)法增加數(shù)據(jù)。如果目錄具有這個(gè)屬性,那么任何的進(jìn)程都不能修改目錄之下的文件,不允許建立和刪除文件。
-j:當(dāng)ext3格式文件系統(tǒng)掛載的時(shí)候使用了參數(shù)"data=ordered" or "data=writeback" options時(shí),設(shè)置j屬性將會(huì)使文件在寫(xiě)入時(shí)先記錄在journal中;但是,當(dāng)文件系統(tǒng)設(shè)置參數(shù)為data=journalled時(shí),由于已經(jīng)設(shè)置了日志,那么設(shè)置無(wú)效。
D:當(dāng)應(yīng)用程序?qū)δ硞€(gè)目錄執(zhí)行了寫(xiě)操作,使系統(tǒng)立刻把修改的結(jié)果寫(xiě)到磁盤(pán)。
d:如果一個(gè)文件設(shè)置了d參數(shù),那么當(dāng)dump程序運(yùn)行的時(shí)候?qū)⒑雎詺w該文件的dump。
c:Compress,系統(tǒng)以透明的方式壓縮這個(gè)文件。從這個(gè)文件讀取時(shí),返回的是解壓之后的數(shù)據(jù);而向這個(gè)文件中寫(xiě)入數(shù)據(jù)時(shí),數(shù)據(jù)首先被壓縮之后才寫(xiě)入磁盤(pán)。
u:Undelete,當(dāng)一個(gè)應(yīng)用程序請(qǐng)求刪除這個(gè)文件時(shí),系統(tǒng)會(huì)保留其數(shù)據(jù)塊以便以后能夠恢復(fù)刪除這個(gè)文件。
說(shuō)明
chattr 命令的作用很大,其中一些功能是由Linux內(nèi)核版本來(lái)支持的,如果Linux內(nèi)核版本低于2.2,那么許多功能不能實(shí)現(xiàn)。另外,通過(guò)chattr命令修改屬性能夠提高系統(tǒng)的安全性,但是它并不適合所有的目錄。chattr命令不能保護(hù)/、/dev、/tmp、/var目錄。
例如1:
[root@node1 mnt]# chattr +a test
[root@node1 mnt]# cat /etc/init.d/httpd > test
-bash: test: Operation not permitted
[root@node1 mnt]# rm -rf test
rm: cannot remove `test': Operation not permitted
[root@node1 mnt]# mv test test.bak
mv: cannot move `test' to `test.bak': Operation not permitted
[root@node1 mnt]#
例如2:
[root@node1 mnt]# chattr +i redhat
[root@node1 mnt]# cat /etc/init.d/httpd > redhat
-bash: redhat: Permission denied
[root@node1 mnt]# rm -rf redhat
rm: cannot remove `redhat': Operation not permitted
[root@node1 mnt]# mv redhat hh
mv: cannot move `redhat' to `hh': Operation not permitted
[root@node1 mnt]# ln redhat nn
ln: creating hard link `nn' to `redhat': Operation not permitted
[root@node1 mnt]# ln -s redhat jack
[root@node1 mnt]# ls -l jack
lrwxrwxrwx 1 root root 6 May 13 08:01 jack -> redhat
[root@node1 mnt]#
例如3:
[root@node1 mnt]# chattr +a duck
[root@node1 mnt]# cd duck/
[root@node1 duck]# touch girl
[root@node1 duck]# ls
girl
[root@node1 duck]# rm -rf girl
rm: cannot remove `girl': Operation not permitted
[root@node1 duck]# cat /etc/init.d/httpd > girl
-bash: girl: Operation not permitted
[root@node1 duck]# mv girl dd
mv: cannot move `girl' to `dd': Operation not permitted
[root@node1 duck]#
例如4:
[root@node1 mnt]# chattr +i duck
[root@node1 mnt]# cd duck
[root@node1 duck]# ls
girl
[root@node1 duck]# touch mm
touch: cannot touch `mm': Permission denied
[root@node1 duck]# rm -rf girl
rm: cannot remove `girl': Permission denied
[root@node1 duck]# mv girl mm
mv: cannot move `girl' to `mm': Permission denied
[root@node1 duck]# cat /etc/init.d/httpd > girl
-bash: girl: Operation not permitted
##################################################
希望可以滿(mǎn)足你的要求!
總結(jié)
以上是生活随笔為你收集整理的linux 文件怎么不让删,请问如何设置权限,可以禁止用户删除文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: html表单显示提示,html侧栏对应表
- 下一篇: 关于计算机的英语作文300,关于大学英语