今天遇到一个问题,是这样的,我创建一个testfile文件,
touch testfile
chown root.root testfile
chmod 702 testfile 
echo "this is a test file" > /test/testfile这样,我给的root的全部权限,给的other只有一个写权限
我切换到其他用户,这里有一个test用户su - test我直接vim 编写这个文件vim testfile 
66666666666666
:wq!保存完退出完成后发现,原来的文件被test用户的testfile文件给覆盖了。还有 我用root给了一个读权限chmod 704 testfile
su - test
vim /test/testfile
这回事可以查看到里面的内容,但是也是可以修改的,
最后只要加上“!”就可以覆盖掉root写的文件我想问,这个有什么好的办法,能防止other权限的人修改或者覆盖这个文件吗?

解决方案 »

  1.   

    有的,你可以给testfile加一个隐藏属性,比如通过a这个属性可以设置文件只能追加补充无法被覆盖删除。
    sudo chattr +a testfile
    通过lsattr查看文件的隐藏属性:
    lsattr
    效果如下:当然,想去掉这个隐藏属性:
    sudo chattr -a testfile
    文件的隐藏属性还有很多参数,而且是可以组合的,以下是我了解的一些参数。
    +/-i    无法对文件进行修改;若对目录设置该参数,则仅能修改其中的子文件内容而不能新建或删除文件
    +/-a    仅允许补充(追加)内容,无法覆盖/删除内容
                (Append Only)
    +/-S    文件内容在变更后立即同步到硬盘(sync)
    +/-s    彻底从硬盘中删除,不可恢复(用0填充原文件所在的硬盘区域)
    +/-A    不再修改这个文件或目录的最后访问时间(atime)
    +/-b    不再修改文件或目录的存取时间
    +/-D    检查压缩文件中的错误
    +/-d    用dump命令备份时忽略本文件/目录
    +/-c    默认将文件或目录进行压缩
    +/-u    当删除该文件后依然保留在硬盘中,方便日后恢复
    +/-t    让文件系统支持尾部合并(tail-merging)
    +/-x    可以直接访问压缩文件中的内容
    希望我的回答可以帮助到你~
      

  2.   

    这里的关键是test这个文件夹的权限,文件夹对test用户还是可写的,所以尽管test用户不能写testfile的内容,但它可以删除这个文件,重新创建一个同名文件。你可以看下你用vim操作后,testfile的owner已经变了。
    解决方案:修改testfile所在的文件夹权限,不允许test用户可写