市面上有许许多多的工具和方法,可以保护你的文件和文件夹,以免被不小心删除。chattr命令就是其中之一。这个命令行实用工具可以更改ext2/ext3/ext4文件系统上的文件属性。它可以防止你的重要文件被不小心删除。即便你对文件拥有全面的权限,但如果这些文件由chattr加以保护,你还是无法删除它们。
为南充等地区用户提供了全套网页设计制作服务,及南充网站建设行业解决方案。主营业务为成都网站建设、成都做网站、南充网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
语法
# chattr [运算符] [参数选项符] [文件名]
运算符
+ 将所选择的属性添加到文件的现有属性中; - 删除所选择的属性; = 让所选择的属性成为文件拥有的唯一属性。
参数选项符
R--递归更改文件夹及其内容的属性。 a--拥有"a"属性的文件只能在追加模式下打开,以便进行写操作。 只有超级用户或拥有CAP_LINUX_IMMUTABLE功能的进程才能设置或清除这个属性。 i--拥有"i"属性的文件无法被修改:该文件无法被删除或更名,无法为该文件创建链接, 也无法将数据写入到该文件。只有超级用户或拥有CAP_LINUX_IMMUTABLE功能的进程才 能设置或清除这个属性。
参数选项符"a"和"i"之间的区别在于,拥有"a"属性的文件可以追加内容,而拥有"i"属性的文件无法追加内容。你可以使用lsattr命令,查看文件的属性。#p#
用法
我们不妨在/home/sk目录下创建名为unixmen1和unixmen2的样本文件:
sk@sk:~$ touch unixmen1 unixmen2
示例1:带"i"参数选项符的chattr
sk@sk:~$ sudo chattr +i unixmen1
查看文件unixmen1的属性:
sk@sk:~$ sudo lsattr unixmen1 ----i--------e-- unixmen1
好了,现在已为unixmen1文件设置了属性。接下来凭借根用户权限,试图删除该文件。
sk@sk:~$ sudo rm -f unixmen1 rm: cannot remove 'unixmen1': Operation not permitted
你看到,就算你拥有根用户权限,也无法删除该文件。
试着将一些内容追加到unixmen1文件:
sk@sk:~$ cat >> unixmen1 bash: unixmen1: Permission denied sk@sk:~$ sudo cat >> unixmen1 bash: unixmen1: Permission denied
当文件由chattr保护时,无论你是超级用户,还是普通用户,都无法追加任何内容。
删除文件属性:
sk@sk:~$ sudo chattr -i unixmen1
现在将一些内容添加到unixmen1文件:
sk@sk:~$ cat >> unixmen1 Welcome to Unixmen Network
按CTRL+D组合键,保存并退出该文件。
现在,你可以没有任何限制地追加内容了。使用下面这个命令,显示该文件的内容:
sk@sk:~$ cat unixmen1 Welcome to Unixmen Network
另外,现在你还可以删除该文件。无论你是超级用户还是普通用户,那都没有关系:
sk@sk:~$ rm -f unixmen1
或者:
sk@sk:~$ rm unixmen1
请注意:我在上面一个示例中没有使用sudo。#p#
示例2:带"a"参数选项符的chattr
正如我在前面提到的那样,参数选项符"a"和"i"之间的区别主要在于,你可以为带"a"参数选项符的文件追加内容,却无法为用"i"参数选项符创建的文件追加任何内容:
sk@sk:~$ sudo chattr +a unixmen2
将一些内容追加到unixmen2文件:
sk@sk:~$ cat >> unixmen2 Hello welcome to unixmen network
按CTRL+D组合键,保存并退出该文件。现在你可以追加内容了,但无法删除该文件:
sk@sk:~$ rm -f unixmen2 rm: cannot remove 'unixmen2': Operation not permitted sk@sk:~$ sudo rm -f unixmen2 rm: cannot remove 'unixmen2': Operation not permitted
使用下面这个命令,清除属性:
sk@sk:~$ sudo chattr -a unixmen2
现在,试着删除该文件:
sk@sk:~$ rm unixmen2
文件将不受任何限制地被删除。#p#
示例3:带"R"参数选项符的chattr
假设我有一个名为unixmen的目录。该文件夹里面含有名为file1、file2和file3的几个文件:
sk@sk:~$ mkdir unixmen sk@sk:~$ cd unixmen/ sk@sk:~/unixmen$ touch file1 file2 file3 sk@sk:~/unixmen$ cd .. sk@sk:~$ ls unixmen/ file1 file2 file3
带"i"参数选项符,为unixmen文件夹及其内容设置属性:
sk@sk:~$ sudo chattr -R +i unixmen/
这里,"R"参数选项符用来递归更改目录unixmen及其内容的属性。
试着删除文件夹unixmen或者其内容:
sk@sk:~$ rm -fr unixmen/ rm: cannot remove 'unixmen/file1': Permission denied rm: cannot remove 'unixmen/file2': Permission denied rm: cannot remove 'unixmen/file3': Permission denied sk@sk:~$ sudo rm -fr unixmen/ rm: cannot remove 'unixmen/file1': Permission denied rm: cannot remove 'unixmen/file2': Permission denied rm: cannot remove 'unixmen/file3': Permission denied
你看到,无论你是根用户还是普通用户,都无法删除文件夹或其内容。如果你使用"i"参数选项符,也无法将任何内容追加到unixmen文件夹里面的文件:
sk@sk:~$ cat >> unixmen/file1 bash: unixmen/file1: Permission denied
想删除unixmen文件夹及其内容的属性,只要执行下面这个命令:
sk@sk:~$ sudo chattr -R -i unixmen/
现在你可以更改、删除或修改该文件夹及其内容了。
正如我们在示例2中看到的那样,只有当你用"a"参数选项符设置了文件夹属性后,才能将内容追加到文件:
sk@sk:~$ sudo chattr -R +a unixmen/
将内容追加到文件:
sk@sk:~$ cat >> unixmen/file1
Hello Welcome
按CTRL+D组合键,保存并退出该文件。
显示file1的内容:
sk@sk:~$ cat unixmen/file1 Hello Welcome
不过,你无法删除文件夹或文件:
sk@sk:~$ rm -fr unixmen/ rm: cannot remove 'unixmen/file1': Operation not permitted rm: cannot remove 'unixmen/file2': Operation not permitted rm: cannot remove 'unixmen/file3': Operation not permitted sk@sk:~$ sudo rm -fr unixmen/ rm: cannot remove 'unixmen/file1': Operation not permitted rm: cannot remove 'unixmen/file2': Operation not permitted rm: cannot remove 'unixmen/file3': Operation not permitted
#p#
示例4:防止用户更改密码
该示例还将帮助你防止用户更改密码。众所周知,/etc/shadow文件为用户帐户存储着采用加密格式的实际密码,同时存储着与用户密码有关的额外属性。它存储着安全用户帐户信息。所以,我们不妨对该文件进行写保护,以防密码被人更改:
sk@sk:~$ sudo chattr +i /etc/shadow
现在,更改当前用户密码(比如sk):
sk@sk:~$ sudo passwd sk Enter new UNIX password: Retype new UNIX password: passwd: Authentication token manipulation error passwd: password unchanged
现在退出系统,以用户"sk"的身份再次登录。不过,你无法用新密码登录进去,仍需要用原来那个密码才能登录。
使用下面这个命令,查看/etc/shadow文件的属性:
sk@sk:~$ sudo lsattr /etc/shadow ----i--------e-- /etc/shadow
想恢复原有属性,只要键入下面这个命令:
sk@sk:~$ sudo chattr -i /etc/shadow
我希望,你会喜欢上这个命令,并使用该命令保护文件,防止被不小心删除。想了解关于chattr命令的更多信息,请参阅参考手册页。
sk@sk:~$ man chattr
原文地址: http://www.unixmen.com/secure-and-prevent-files-from-accidental-deletion-with-chattr/
当前题目:如何借助chattr命令让重要文件免遭删除
文章位置:http://www.36103.cn/qtweb/news1/37451.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联