linux 文件怎么不让删,请问如何设置权限,可以禁止用户删除文件
原帖由 WHITLACK 于 2009-9-28 08:48 發表
針對某個文件,如何設置權限,可以禁止刪除?
文件權限的r-w-x好像不能禁止刪除的啊,
謝謝指教!
1:使用粘滯位可以做到,下面是介紹.
強制位與冒險位、粘滯位
針對u,g,o,分別可設 set uid,set gid,及sticky bit(粘滯位)。
強制位與冒險位、粘滯位添加在執行權限的位置上。如果該位置上原已有執行權限,則強制位與冒險位以小寫字母s或t的方式表示;否則,以大寫字母表示,大寫字母S、T表示為空。(因為文件本身就不具備執行權限,那就沒有權限給其他人使用了,所以為空。)
set uid與set gid在u和g的x位置上各采用一個s,sticky使用一個t。
suid: 意味著如果某個用戶對屬于自己的程序(只適用于二進制程序且對目錄無效)設置了這種權限,那么其他用戶在執行這程序時,就會暫時具有該文件擁有者的權限,完成之后恢復對應的權限。 對于shell腳本無效,因為shell腳本是將很多二進制執行文件調用而已,所以suid的權限部分還是要看shell腳本調用進來的程序設置,而不是shell腳本本身。
例如password命令
[root@node1 ~]# ll /usr/bin/passwd
-rwsr-xr-x 1 root root 22960 Jul 17??2006 /usr/bin/passwd
[root@node1 ~]#
sgid: 可以用在兩個方面:
文件:如果sgid設置在二進制文件上,則不論用戶是誰,執行該程序的時候,它的有效用戶組將會變成該程序的用戶組所有者。
目錄:如果sgid是設置在A目錄上,那么則該A目錄內所建立的文件或目錄的用戶組將會是A目錄的用戶組。如tmp目錄。
sticky Bit: 當前只針對目錄有效,對文件無效。默認情況下,如果一個目錄上有w和x權限,則任何人可以在此目錄中建立與刪除文件。但是如果在該目錄上設置了sticky Bit,、那么在該目錄中創建的文件或目錄,只有文件的擁有者與系統管理員(root)才有權限刪除該文件。
強制位與冒險位、粘滯位對應的權限數字為:
suid:4
sgid:2
sticky Bit: 1
2:使用chattr命令
功能介紹
設置文件隱藏屬性,使用權限超級用戶(chattr changes the file attributes on a Linux second extended file system.)。
語法格式
chattr [-RV] [-+=AacDdijsSu] [-v version] 文件或目錄
參數
-R:遞歸處理所有的文件及子目錄。
-V:詳細顯示修改內容,并打印輸出。
-:取消某個特殊參數。
+:增加某個特殊參數。
= :指定特定的參數。
A:Atime,告訴系統不要修改對這個文件的最后訪問時間。
S:Sync,當應用程序對這個文件執行了寫操作,使系統立刻把修改的結果寫到磁盤。
s:當文件設置了s參數時,它將會徹底從這個硬盤空間中刪除掉,它的數據塊會用0填寫。
a:Append Only,系統只允許在這個文件之后增加數據,而不能刪除這個文件。如果目錄具有這個屬性,系統將只允許在這個目錄下建立文件,而不允許刪除任何文件,也不允許修改目錄下原有的文件。只有root用戶可以設置這個屬性。
i:Immutable,系統不允許對這個文件進行任何的修改,包括刪除、修改、設置連接(可以設置軟鏈接),也無法增加數據。如果目錄具有這個屬性,那么任何的進程都不能修改目錄之下的文件,不允許建立和刪除文件。
-j:當ext3格式文件系統掛載的時候使用了參數"data=ordered" or "data=writeback" options時,設置j屬性將會使文件在寫入時先記錄在journal中;但是,當文件系統設置參數為data=journalled時,由于已經設置了日志,那么設置無效。
D:當應用程序對某個目錄執行了寫操作,使系統立刻把修改的結果寫到磁盤。
d:如果一個文件設置了d參數,那么當dump程序運行的時候將忽略歸該文件的dump。
c:Compress,系統以透明的方式壓縮這個文件。從這個文件讀取時,返回的是解壓之后的數據;而向這個文件中寫入數據時,數據首先被壓縮之后才寫入磁盤。
u:Undelete,當一個應用程序請求刪除這個文件時,系統會保留其數據塊以便以后能夠恢復刪除這個文件。
說明
chattr 命令的作用很大,其中一些功能是由Linux內核版本來支持的,如果Linux內核版本低于2.2,那么許多功能不能實現。另外,通過chattr命令修改屬性能夠提高系統的安全性,但是它并不適合所有的目錄。chattr命令不能保護/、/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
##################################################
希望可以滿足你的要求!
總結
以上是生活随笔為你收集整理的linux 文件怎么不让删,请问如何设置权限,可以禁止用户删除文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html表单显示提示,html侧栏对应表
- 下一篇: linux 1号硬盘不能用,linux